1 名前:デフォルトの名無しさん [2009/07/12(日) 06:55:24 ] クロスプラットフォーム 3D API OpenGLに関する話題を扱うスレッド。 禁止事項 ・「OpenGL終了」系のまず価値否定ありきの主観発言(客観的な懸念要素を挙げた上での建設的議論は可) ・学歴・理系か文系かに関連する差別発言 ・その他の荒らし全て これらは付き合うだけ無駄なので無視しましょう。 - 前スレ - OpenGLスレ Part12 pc12.2ch.net/test/read.cgi/tech/1221215309/ - 関連サイト - www.opengl.org/ www.mesa3d.org/ developer.nvidia.com/ www.ati.com/developer/ developer.3dlabs.com/ - 過去スレ - Part11: pc11.2ch.net/test/read.cgi/tech/1177523018/ Part10: pc11.2ch.net/test/read.cgi/tech/1141034983/ Part 9: pc8.2ch.net/test/read.cgi/tech/1132403929/ Part 8: pc8.2ch.net/test/read.cgi/tech/1126267690/ Part 7: pc8.2ch.net/test/read.cgi/tech/1118151979/ Part 6: pc8.2ch.net/test/read.cgi/tech/1105612993/ Part 5: pc5.2ch.net/test/read.cgi/tech/1100085657/ Part 4: pc5.2ch.net/test/read.cgi/tech/1091724463/ Part 3: pc5.2ch.net/test/read.cgi/tech/1067529308/ Part 2: pc2.2ch.net/test/read.cgi/tech/1039984523/ Part 1: pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
2 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 06:56:54 ] - 関連スレ - OpenGL 2.0 専用スレ pc12.2ch.net/test/read.cgi/tech/1126268759/ くだすれOpenGL(超初心者用) pc11.2ch.net/test/read.cgi/tech/1131208166/ (dat落ち) - 各社のOpenGL拡張対応状況- nVidia developer.nvidia.com/object/nvidia_opengl_specs.html ATI mirror.ati.com/developer/sdk/radeonSDK/html/info/Prog3D.html - その他もろもろリンク集 - www.nbrains.net/php/pukiwiki/index.php?OpenGL
3 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 06:57:48 ] - 補助ライブラリ - ■OpenGLコーディングの補助 ・glew glew.sourceforge.net/ OpenGL拡張の利用を簡便に。 ■数値演算ライブラリ ・CwMtx library www.xs4all.nl/~hkuiper/cwmtx/cwmtx.html 行列、ベクトル、クォータニオンの演算ライブラリ。LGPL。 ・Matrix, vector and quaternion library 2.0 www.programmersheaven.com/zone3/cat415/26784.htm 配布ページの記述によれば無償で使えるらしい。ライセンスは未確認。 C++のメタテンプレート技法を多用しているので高速。APIとしての形も非常にシンプル。 ・MathGL++ sourceforge.net/projects/mathgl-pp/ 行列、ベクトル、クォータニオンなどの各種演算用ライブラリ。APIはOpenGLライク。LGPL。 ■マルチプラットフォーム化・イベントやサウンドなどのハンドリング ・SDL www.libsdl.org/index.php 定番。数多くの関連ライブラリが開発されている。現在のバージョンでは描画とイベントハンドリングを分離できないため、 描画がもたつくとイベント処理ももたつく。ライセンスはLGPL。 ・Allegro www.talula.demon.co.uk/allegro/ サポートしている機能、対応OSともにSDLに似ている。日本語資料は少ないが、Gift-wareという位の寛大なライセンスが魅力。 ・GLFW glfw.sourceforge.net/ キーボード、マウス、ジョイスティックなどのイベント処理、タイマ、マルチスレッド辺りのみをシンプルに抑えたマルチプラットフォームライブラリ。 サウンドやその他は他のライブラリと組み合わせたい場合は、こちらの方が競合などの問題が無く安心か。 ・Java+jogl https://jogl.dev.java.net/ OpenGLのJavaバインディング。現在のSun JavaVMがC++に肉薄した演算パフォーマンスを発揮している今、 Javaの豊富な標準ライブラリやSwing・Java2Dと連携できる事も考えると、今後はダークホース的選択肢に?
4 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 06:58:48 ] ■サウンド ・OpenAL www.openal.org/ 3Dサウンドライブラリ。マルチプラットフォーム。DirectXゲームでもサウンドはこれを使っているものも。MacOSXでは標準で入っている。 ■その他 ・OpenSceneGraph www.openscenegraph.org/ シーングラフライブラリ。 ・freetype www.freetype.org/ ビットマップフォントやベクタフォントのレンダリングを行うライブラリ。 ■フォント描画 ・FTGL homepages.paradise.net.nz/henryj/code/index.html#FTGL Freetypeを利用したもの。マルチプラットフォーム。アウトラインフォント対応。日本語が使えるかは未確認。 ■物理エンジン ・ODE:Open Dynamics Engine ode.org/ode.html オープンソース物理エンジン(GPL or BSD-Style License)
5 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 06:59:34 ] 850:デフォルトの名無しさん :sage:2009/06/26(金) 01:22:49 毎年恒例の、課題提出時期の質問ラッシュな予感!
6 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 11:53:22 ] >1 乙
7 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 12:42:30 ] >>5 テンプレかwww
8 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 01:41:59 ] glMultMatrixf では float [16] なのに、GLUT の vvector.h では [4][4] なのが辛いなあ
9 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 01:50:32 ] そんな内部ヘッダを中途半端に流用するから悪いんだろ MULTMATRIXマクロでも使ってろってこった
10 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 02:39:39 ] >>8 vvector.hなんて知らないけど、これじゃだめ? glMultMatrixf( &(matrix[0]) );
11 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 03:24:34 ] >>10 それも良いけど、行と列の取り方が違うから、一度行列を転置させなきゃいけなくて、 些細なことだけど、結局手間は変わらないんだよね残念ながら なんで GLUT 付属のマクロでOpenGLと扱いが違うのか謎
12 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 03:54:45 ] うっへ、自己解決したスマソ 計算の順番変えれば良いだけだよな……
13 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 03:58:21 ] というか回答を鵜呑みにするならglMultTransposeMatrixで足りるはずだが
14 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 11:02:17 ] ごめ、そんな関数が有るって今知った ホントスレ汚しスマン
15 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 12:56:32 ] 前スレの終盤にくらべたら、水滴が落ちた程度のことだ。
16 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 02:16:47 ] ttp://ruffnex.oc.to/kenji/gl/の解説を見ながら ttp://ruffnex.oc.to/kenji/src/xi.cppを弄ってますが 2点ばかりわからない点があるので教えてください。 1点目: このままのソースではX軸周りは回転を行わず平行移動だけなので、 display()の中で、直前の回転方向を保存しておき、RotateCube()の 第5引数に渡してみたところ、一応回転するようにはなりました。 しかしよくみると、X軸→Z軸→X軸と回転させると面の色の変化が おかしなことになってしまいます。 これはどう考えて解決するべきでしょうか? 2点目: 現在接地している面の色を知るためにはどう考えて解決するのが 一番効率的でしょうか?
17 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 03:44:50 ] カラーに関しては、 void BottomColor(GLdouble* bColor, GLdouble **vertex) { GLdouble color[][3] = { { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }, { 1.0, 1.0, 0.0 }, { 1.0, 0.0, 1.0 }, { 0.0, 1.0, 1.0 }, }; int face[][4] = { { 0, 1, 2, 3 }, { 1, 5, 6, 2 }, { 5, 4, 7, 6 }, { 4, 0, 3, 7 }, { 4, 5, 1, 0 }, { 3, 2, 6, 7 }, }; int i; for(i=0; i < 6; i++){ if(vertex[face[i][0]][1] < 0.0 && vertex[face[i][1]][1] < 0.0 && vertex[face[i][2]][1] < 0.0 && vertex[face[i][3]][1] < 0.0) break; } bColor[0] = color[i][0]; bColor[1] = color[i][1]; bColor[2] = color[i][2]; } こんなんでどうにでも成る 回転に関しては、ちょっと何やってんのか分かんない
18 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 12:43:45 ] >>16 移動回転するなら行列演算のが簡単で、元ソースみたいな頂点を自力で変更する方法はあまり良いとは言えないんじゃないかな もちろん調べてるだけってならかまわんけど。 glRotate*やglTranslate*で移動回転して、ワールド欲しければMODELVIEW等をgetすればいいし。 接地が一番下向いてる面ってことなら法線とY軸との内積が最小(-1)ってやるのがてっとり早いような
19 名前:デフォルトの名無しさん [2009/07/15(水) 21:35:44 ] glewを使ってマルチサンプリングでアンチエリアシングをしようとしているのですが、 うまくいきません。それで一つ質問があるのですが、以下のURLの一番下のサンプル www.codesampler.com/oglsrc/oglsrc_14.htm#ogl_multisample_transparency では、GetDC→ChoosePixelFormat→SetPixelFormat→wglCreateContext→wglMakeCurrent という通常の手順でカレントのレンダリングコンテキストを設定した上でglewInit()を呼んで GLEWを初期化しています。 そしてwglMakeCurrent(NULL, NULL)→wglDeleteContextといったんコンテキストを削除した上で wglChoosePixelFormatARBを実行し、 再度GetDC→SetPixelFormat→wglCreateContext→wglMakeCurrent とカレントのレンダリングコンテキストを設定しています。 サンプルがやろうとしていることの意味は理解できるのですが、 他のサイトにはSetPixelFormatは同じウィンドウに対して一度しか呼べない、という記述もあります。 上記サンプルでは2度呼んでいるのですが、これは間違っているのでしょうか。 それとも「同じウィドウに対して一度しか呼べない」というのは 「同じDCに対して一度しか呼べない」という意味でしょうか?
20 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 15:25:23 ] >>19 どのみちそのサンプルでは同じDCに二度SetPixelFormatしてるね。 wglがらみの問題はOSで挙動が異なることが多々あるから動くならいいやというスタンスしかない気もする。 今回の件は、最初のコンテキスト生成のためにダミーのウィンドウとDCを臨時で作って、 用が済んだらすぐ削除してはどうだろうか
21 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 20:49:55 ] glPolygonOffset( factor, units ) でポリゴンのスクリーン Z 座標にオフセットを 加えることができますが、OpenGL の仕様書には オフセット値 = m * factor + r * units と書かれています。 このときの r は implementation-dependent constant と書いていますが、この値を 取得したり計算する方法はあるでしょうか?
22 名前:19 mailto:sage [2009/07/16(木) 21:25:41 ] >>20 どうも。ダミーのウィンドウを作る線でやってみようと思います。 話しは変わるけれど、テンプレの>>4 のFTGLは日本語(ワイド文字)使えるよね。
23 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 22:36:03 ] >>22 FTGLはワイド文字で日本語いけますね。速いし簡単だしでとても便利。 ただ、フォントファイルに MSGOTHIC.TTC みたいなフォントコレクションを指定すると、 face indexが指定できないせいで等幅かプロポーショナルかとか選択できなくて困るんですよね。 指定できるようにするのなんて簡単だと思うんですが、なんでそうなってないんでしょう・・・。 (もし指定する方法あったら教えてください)
24 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 19:53:54 ] >>23 うーん、FTGLはよく使うけど等幅の選択みたいなことはしたことないというか そういう関数は見あたらないなぁ。
25 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 08:20:51 ] opengl 初心者ですが、 visual studio で作成したGUIからの入力でopengl での描画を更新したいんですが 可能でしょうか?
26 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 11:08:06 ] 可能です。
27 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 11:42:01 ] どうやって?
28 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 11:43:30 ] openGLプログラムと、GUIプログラムのプロセス間通信で やったけど、できれば一つのプログラムで行いたいのですが。
29 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 11:50:23 ] Windowsのプロセスって、自分と通信できないんだっけ?
30 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 12:34:12 ] >>28 スマンが質問の意味が判らない。 OpenGLプログラムって何のことを指してる? GUIアプリでOpenGLを使うだけだと思うのだが。
31 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 12:52:20 ] わからない人はだまっててください。
32 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 13:08:45 ] そして 実際にコンパイルできるソースを書いてくれませんか? だな
33 名前:デフォルトの名無しさん [2009/07/18(土) 13:35:31 ] >>30 GUIアプリのプロセス内でGLコンテキストを持つウィンドウを作るのが常套手段だよなあ。
34 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 14:19:21 ] GLUTとか使ってると面倒かもね。
35 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 15:20:09 ] またいつものキチガイだろ。スルーしろよ。
36 名前:25 mailto:sage [2009/07/18(土) 18:54:03 ] ここまで物議をかもすとは思わなかった。 CGの形を変える変数をGUIで打ったら、 それに応じて表示を変えるということをしたいのです。 glutMainLoop();に入ると、マウスやキーボードからの入力は受け付けるけど GUIからの入力をどうやって反映させるのか?と思いまして。 VisualStudio2008 expressでGUIを作り、CGの形を決める変数と紐付けられたリストボックスの項目を選択すると 下の関数に入るという風にしました。 private: System::Void listData_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { とりあえずプロセス間通信で変数をOpenGLのプログラムに送り glutDisplayFunc(display);のコールバック関数 displayで受け取り CGの形を変えるようにしました。 これで問題ないけど、できればプロセス間通信無しで行いたいと思うのですが。
37 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 19:01:55 ] >>36 GLUT使わずに自前でコンテキスト作成すればいいじゃない
38 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 19:16:54 ] >>36 なんでプロセス間通信とか、わざわざ面倒臭い道を選ぶんだよwwww と言いたいところだけど、自前でGLのコンテキスト作るのも慣れないと面倒だからねぇ。 えーと、そのGUIのプログラムとやらに、GL用のウィンドウを追加するのが早いと思うよ。 ただ、GLUTを使わないでやることになるので色々と追加でお勉強が必要になる。 まずはGUIプログラムとは別に、Win32API(&wgl)で簡単なOpenGL表示テストアプリを 作ってみることをオススメする。それをGUIプログラムに持っていけばいいかなと。 「OpenGL win32api」とかでぐぐれかす。
39 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 19:27:28 ] GLUTつかうとこういう罠があるからねぇ。 かといって、コンテキスト云々もWinでOpenGLが目的じゃないんなら余計な手間だし、 GLUTに依存してるコード書き直すのも面倒だと思うんで今のままでいいんじゃないかな。
40 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 19:27:53 ] >>36 なんでもいいならAntTweakBarが楽だよ
41 名前:デフォルトの名無しさん [2009/07/18(土) 20:07:34 ] GLUTをVisual Studio 2003 でやっているんだけど オートコンプリート等のインテリセンスが機能しないから 効率が悪いんです 2008 Expressだとオートコンプリート機能はつきますか? もしくはオートコンプリート機能を追加する方法はありますか? 質問がひどければ謝ります
42 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 20:21:58 ] VS2003でも2008でもインテリセンス動くでしょ? ただ、2003も2008もたまに機嫌を損ねるのか、インテリセンス動かなくなるけど。 あれ全然分かんないんだよなー。なんで動かなくなるのか、 動かなくなったらどうすれば回復するのか・・・。
43 名前:36 mailto:sage [2009/07/18(土) 20:27:13 ] アドバイスありがとうございました。 そうですか。GLUTから変えるしかないということで。 今のプログラムはとりあえずこのままで使っていって、 別のopengl プログラム作るときにはコンテキスト作成するようにします。 AntTweakBarも楽に出来るなら見てみます。
44 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 20:28:33 ] >>25 GLUTを使わないで自分でGLコンテキストを作る、 openGLに対応したGUIを使う(MUIからQtまでいろいろ) ダイアログボックスにしてopenGLとは分離してしまう とかかな >>40 前スレで知ってちょっと見ただけだけど、AntTweakBarはGLUTと相性悪くね。 openGLのモデル描画を変更があったときだけ再描画したいときとか困るし
45 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 14:08:14 ] >>36 あれ、よく見たら、もしかして.NetっていうかC++/CLI(C#と混合?)でやってんの? だからプロセス間通信なのか・・・。 だとしたら、win32apiとか使えないかも。C++/CLIは使ったことないけど。 .Netの事は良く知らないけど、OpenGLを描画するためのコンポーネントとか無い? まずはそれを検索してみると良いのでは。 あるいは、GLUT使ってるんならCかC++は使えるんだろうから、 C++/CLIを使うのはやめてC++でGUIも書くとか。 wxWidgets+wxFormBuilderとか、Qt(GPL版)とか使えば、GUIの作成も手っ取り早いよ。 まぁもっとも、手っ取り早いのは慣れた人だけで、wxもQtもそれなりの勉強時間は必要だけど。
46 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 14:13:05 ] わからない人はだまっててください。
47 名前:デフォルトの名無しさん [2009/07/19(日) 14:17:53 ] >>45 「.net openGL」でググっただけでいかようにもなりそうだが。 日本語でも英語でも。
48 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 14:20:48 ] >>47 おおう。ホントだ! しかも何コレ簡単だし楽そうだなぁ。 今度小さなテストアプリ書くときは.Netでやってみるか〜。 >>46 w
49 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:11:28 ] 質問です。 初期処理にて glEnable(GL_DEPTH_TEST); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); とやり、描画ループのバッファクリアのタイミングで glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); としているのですが、ポリゴンが面の片側にしか描画されません。 こういった場合にまず疑う or 検証すべき箇所はどこでしょうか。 他にオプション関係で初期処理中に行っている事といえば、 glEnable(GL_POINT_SMOOTH); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); あと、頂点の並びが個人的にイメージしやすいので glFrontFace(GL_CW); としています。よろしくお願いします。
50 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:22:53 ] GL_CULL_FACEの意味をちゃんと調べたほうがいい
51 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:22:55 ] カリングやってるからじゃね?
52 名前:49 mailto:sage [2009/07/22(水) 23:59:57 ] >>50 ,51 ありがとうございます。 そこは確かに怪しいのですが、カリングOFFでも状況変わらずでした。 たとえば、辺の長さ1の立方体を、Z軸の真ん中で分断するような面↓を作り、 GLfloat vert[] = { 0.0f, 0.0f, 0.5f, 0.0f, 1.0f, 0.5f, 1.0f, 1.0f, 0.5f, 1.0f, 0.0f, 0.5f }; GLfloat texPoints[] = { 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f }; glBindTexture(GL_TEXTURE_2D, someTexID); glTexCoordPointer(2, GL_FLOAT, 0, texPoints); glVertexPointer(3, GL_FLOAT, 0, vert); glDrawArrays(GL_QUADS, 0, 4); とでもしてみて、立方体から北側となる{0.5f, 0.5f, -2.0f}辺りの視点 から上記のvert面を確認します。すると立方体の南面、東面、西面を裏側から 観る事になるのですが、この時、南面と東面の裏側にだけ、意図しない 黒いポリゴンが表示されるのです。分断面そのものは期待通りに描画されます。 どなたか似たような経験をされた方がおられれば、と思って質問しました。
53 名前:49 mailto:sage [2009/07/23(木) 00:11:48 ] すみません、話が飛躍してしまったので追記といいますか、補正です。 そもそも最初にこちらで質問したかったのは、 「画面内に意図しない黒いポリゴン面が描画される原因」でした。 それで、よく見てみると、その変な黒いポリゴン面が描画されるのは 「透明部分を含むテクスチャ」を使用している面(の背後)でした。 テクスチャ画像の透明部分から、当然、向こう側が透けて見えるわけですが、 その向こう側には別のテクスチャの裏面が描画されているわけです。 そこで、その遠いテクスチャの裏返しが描画されているのなら納得できるのですが、 見えているのは真っ黒なポリゴン面でした。それで>>49 のような質問を させて頂きました。 >>52 で書いたのは、そういった話をすっ飛ばして、 透明テクスチャの周囲で描画がおかしくなる、という現象の説明でした。 説明が飛び過ぎてよくわからないですね。すみません。
54 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 06:00:21 ] 透けるの透けないの、黒いの白いの東西南北、さっぱりわからん ゴチャゴチャ言ってないで、うまくいかないシンプルなプログラムを丸ごとどっかにupしろ つか、課題なら授業中に講師に聞け
55 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 08:30:12 ] ただの描画順の話でないの? 透明とか半透明を含むポリゴンは奥から手前の順番になるように描かないとだめだよ
56 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 08:48:28 ] 光が当たらないと真っ黒になるよね
57 名前:49 mailto:sage [2009/07/23(木) 09:12:53 ] 皆さんありがとうございます。 >>54 結構巨大なソースになりつつあるので、全体をアップするとは考えても見ませんでした。ちょっと時間を用意して、できる事なら該当箇所を切り出して見ます。本当にもう、課題だったら先生に聞けて楽なのですが……。ありがとうございました。 >>55 ,56 そのあたり、あまりきちんと理解せずに組んでいるかもしれません。特に透明が絡んだ時の描画順については全く意識していなかったので、調べて見ます。ありがとうございました。
58 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 18:31:23 ] 前スレで外部モジュールのnvoglnt.dllでエラーが発生する件で質問をしていた者です。 問題が解決したので、ご連絡します。 ===状況=== GLUTを用いてマルチウィンドウを実装したソフトを動かしていると、不定期なタイミングでnvoglnt.dllでエラーが発生する。 問題のモジュールが呼ばれる順序が kernel32->glut32->opengl32->nvoglnt となっていた為、問題箇所を特定することが出来ず、デバッガーで追うことが出来ない(追う方法を知らない) ===問題点=== 複数のウィンドウを連動させる為に、 「dispAの描画が発生したらdispBの描画も行う」 という処理を実装する際に以下のようなコーディングを行っていました。
59 名前:58 mailto:sage [2009/07/23(木) 18:32:29 ] 何かのデータ処理を行う関数(){ /* データ処理を記述 */ /* dispAの描画を実行 */ dispA(); } dispA(){ glutSetWindow( dispA ); /* dispAの描画処理を記述 */ ・・・ glutSwapBuffers(); /* dispBの描画を実行 */ dispB(); } dispB(){ glutSetWindow( dispB ); /* dispBの描画処理を記述 */ ・・・ glutSwapBuffers(); } dispAの描画を行う箇所が複数存在していて、ソースを簡略化するために 上記のようにdispA()の中でglutSetWindow( dispA )を実行するようにして、 dispAを呼び出したい場所ではdispA();と一行記述すればいいようにしていました。 この記述方法だと、何かのデータ処理を行う関数()が実行されると強制的にdispA()が実行されてしまうのが問題で 下記のようにglutPostRedisplay();をコールすることで描画タイミングをハードウェアに任せるように記述することで問題が解決しました。
60 名前:58 mailto:sage [2009/07/23(木) 18:33:24 ] 何かのデータ処理を行う関数(){ /* データ処理を記述 */ /* dispAの描画を実行 */ glutSetWindow( dispA ); glutPostRedisplay(); } dispA(){ /* dispAの描画処理を記述 */ ・・・ glutSwapBuffers(); /* dispBの描画を実行 */ glutSetWindow( dispB ); glutPostRedisplay(); } dispB(){ /* dispBの描画処理を記述 */ ・・・ glutSwapBuffers(); } 前スレが見えなくなってしまったので、アドバイスを頂いた方の番号が分からないのですが、本当にありがとうございました。
61 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 19:31:37 ] glutについて質問したいのですが、あまりにもレベルの低い 内容なので、ここで質問して良いものか迷っています。 glutに関して初心者が集うようなスレッドはありますか。 あれば紹介して欲しいです。なければここで質問させてほしいです。
62 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 19:35:48 ] ここでどうぞ
63 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:59:33 ] >>62 早いお返事ありがとうございます! どの程度説明すれば伝わるか分からないのですが、とりあえず… 1.x,z軸に沿った平面を作りまして 2.その平面の上から平面に向かって垂直にスポットライトを当てまして 3.平面の光が当たっている部分が丸く明るくなっているのを確認しまして 平面は拡散反射にしているのに、何故かカメラを上に平行移動させると 丸く明るくなっているところが手前にずれてきて楕円になってしまうのです。 イメージ的にはカメラが上に上がるにつれてライトがこちらを向いてきている ような… 因みに、カメラはライトの真上ではなくて斜めから向けてます。 長々と分かりづらい文章ですみません。 必要でしたらソースコードとか動画とか載せますんでお願いします。 私としては平面図形とライトが何故か別々の動きをしていて それを何とかできれば…と思っているところです。
64 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 22:08:50 ] どう考えても必要だからまずソースうpれよ
65 名前:61 mailto:sage [2009/07/24(金) 22:22:50 ] >>64 それもそうですね。 見づらいでしょうが、よろしくお願いします。 #include <GL/glut.h> GLdouble vertex[][3] = { { -0.5, 0.0, -0.5 }, { -0.5, 0.0, 0.5 }, { 0.5, 0.0, 0.5 }, { 0.5, 0.0, -0.5 }, }; int face[4] = { 0, 1, 2, 3}; GLdouble normal[] = { 0.0, 1.0, 0.0 }; GLfloat light0pos[] = { -1.0, 5.0, 0.0, 1.0 }; GLfloat spotDir[] = { 0, -1, 0 }; GLfloat lightred[] = { 1.0, 0.3, 0.3, 1.0 }; GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; int flag_right = 0; int flag_left = 0; void display(void) { int i,j,k; static double d = 0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); /* 視点位置と視線方向 */ gluLookAt(0.0, 6.0+d*d, 50.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
66 名前:61 mailto:sage [2009/07/24(金) 22:25:18 ] /* 光源の位置設定 */ glLightfv(GL_LIGHT0, GL_POSITION, light0pos); glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, white); /* 土台の描画 */ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, white); for( i=0; i<40; i++){ for( j=0; j<40; j++ ){ glPushMatrix(); glTranslated( i-20, 0, j-20); /* 1*1の平面 */ glBegin(GL_QUADS); glNormal3dv(normal); for (k = 0; k < 4; k++) { glVertex3dv(vertex[face[k]]); } glEnd(); glPopMatrix(); } } glutSwapBuffers(); if ( flag_right ) d = d + 0.05; if ( flag_left ) d = d - 0.05; if ( d < 0 ) d = 0; } とりあえず入りきらなかったので初期化関係その他は省きました。 全部必要だったりします?
67 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 23:51:11 ] >>65 起動させてみたけど、ただ単にカメラを上げるにつれ、ライトとカメラのなす角度が小さくなってゆく訳で、 特に異常はないけど? > 前にずれてきて楕円になってしまう むしろ楕円だったのが真円に近くなってくるだろ、d増加につれ
68 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 23:55:11 ] どこでスポットライト? ソースチラ見でわかんなかったから、ちょっとコード足したら普通に点光源で動いたが ソース出すなら、めんどくさいから全部出したほうがいいんじゃね PROJECTIONによっては楕円に見えるかもしんないし
69 名前:61 mailto:sage [2009/07/25(土) 03:31:13 ] >>67-68 ありがとうございます。 正常に動いてますか… いよいよどこか勘違いしてる気がしてきました。。 以下、残りです。 void resize(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)w / (double)h, 1.0, 500.0); glMatrixMode(GL_MODELVIEW); } void init(void) { glClearColor(0.0, 0.0, 0.0, 1.0); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glFrontFace(GL_CCW); glEnable(GL_AUTO_NORMAL); glEnable(GL_NORMALIZE); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightred); glLightfv(GL_LIGHT0, GL_AMBIENT, lightred); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 30); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spotDir); glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.01); }
70 名前:61 mailto:sage [2009/07/25(土) 03:34:16 ] void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: if (state == GLUT_DOWN) { flag_left = 1; glutIdleFunc(idle); } else { flag_left = 0; glutIdleFunc(0); } break; case GLUT_RIGHT_BUTTON: if (state == GLUT_DOWN) { flag_right = 1; glutIdleFunc(idle); } else { flag_right = 0; glutIdleFunc(0); } break; default: break; } }
71 名前:61 mailto:sage [2009/07/25(土) 03:35:02 ] int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow(argv[0]); glutDisplayFunc(display); glutReshapeFunc(resize); glutMouseFunc(mouse); init(); glutMainLoop(); return 0; } 手間をかけさせるような真似をしてすみません。
72 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 03:57:53 ] スクショみせてみ、何に不満なのか
73 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 04:03:18 ] やっぱライトの設定があったか init()の中のGL_SPOT_DIRECTIONをdisplayのGL_POSITIONと同じ場所で ライトの設定はgluLookAtの後でやらないとビュー座標になる
74 名前:61 mailto:sage [2009/07/25(土) 20:59:41 ] >>73 おお、直りましたありがとうございます! 座標、ベクトル関係は変換行列だとかの 影響を受けるということなのかな…。。 >>72 もう解決してしまいましたが、一応。 www1.axfc.net/uploader/Sc/so/20994.jpg OpenGLスレのみなさん、お騒がせしてすみませんでした。
75 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:01:51 ] 【科学】道路に軍手が落ちているワケ、名城大研究チームが突き止める[09/07/24] namidame.2ch.net/test/read.cgi/hidari/1225537555/
76 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:07:26 ] ちょい質問 メインスレッドで描画してたプログラムの描画命令部分をスレッド化しようとしてる それで描画命令部分をそっくりそのままスレッド化したら、 プログラム起動 -> 描画スレッド呼出(1回目) -> スレッド破棄 -> スレッド呼出(2回目) … この呼出2回目以降描画されなくて困ってるんだけど、原因に心当たりないかな? HDC、HRCの設定と破棄は描画スレッドでやってる 1回目は何の問題もなく描画されてるから、原因がさっぱりわからなくて困ってる・・・
77 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:21:11 ] >>76 まずはソース出せよ
78 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:57:52 ] エラーチェックしろよ
79 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:30:43 ] Google 3D ギャラリーの3DモデルをOpenGLで読み込みたいんですが参考になるページありませんか?
80 名前:デフォルトの名無しさん [2009/07/29(水) 13:26:15 ] なんか藻前等凄いなw OpenGLって文書があんま充実してないのに、よく生き残ってるよな。 以前はもっと使いやすいHOOPSとかいう3Dグラフィクスライブラリなんか あったんだよ(すげー使いやすいかた)。 ほんと、このスレで得意げになってGLのコードすらすら書いてるヤシって ただもんぢゃねー
81 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 15:31:49 ] HOOPSっておいおい……
82 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 18:30:17 ] LinuxやFreeBSDだとOpenGLしかないからな。 DirectXがあったところできもいので使わないけど。 ただOpenGLやDirectXにかわるスマートで見通しのいいAPIがあっても良いと思う今日この頃。
83 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 19:03:47 ] DirectX あの命名規則はなんとかならんの?
84 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 19:19:11 ] OpenGLやDirectXにかわる・・・幻と消えたFahrenheit・・・ どんなAPIになる予定だったのだろう
85 名前:m9('v`)ノ ◆6AkAkDHteU [2009/07/29(水) 20:30:52 ] >>81-84 レスどうもです。 思うのはね、もうちっとMayaなんかとの連携がスムーズになっていても よかったんじゃないかなぁ・・・って。 だって、モデリングして、それ取り込んで、それからコードづらづら 書くなんてさ、15年前のGLと大差無いんですもん。 Unityとかoolong(だっけ?)なんていう技術が生まれてはいるんだけど、 なんか使い肉そぉ。 EclipseとかVisual Studioとかの統合開発環境が これだけ発達したんだから、もちっとOpenGL自体も他の技術との親和性を 高めて欲しい。PS3とかで3Dゲームばりばり作ってる人には、SCEが フレームワーク準備してあげてるんでしょ? そういうフレームワークがOpenGL自体に欲しいのよね。ホントこの状態で ばりばりOpenGLのコード書く連中って神がかってるwお世辞ぢゃなくて。
86 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:37:52 ] フレームワークなんて探せばゴロゴロ出てくる。 個人の趣味レベルのものから商業レベルのものまでな。 使いこなせるかどうかは別として。
87 名前:デフォルトの名無しさん [2009/07/29(水) 20:46:57 ] gltexsubimage2Dを使ってテクスチャの書き換えをして オブジェクトに落書きみたいなことをしたいんだけど この場合透明な色に書き換えることってできる?
88 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:47:47 ] よけいなことをしないのがopenGLのいいところ だからこそ、それぞれの分野で足りないところは自分で補えるし、使いやすい。 つか、得意げになってとか神がかってるwとか、お世辞ぢゃなくてバカにしてんだろ?w
89 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 00:49:48 ] >>85 そりゃOpenGLはグラフィックス用のアセンブリ言語と呼ばれる位だから。 高レベルなことをしたいならそれなりのフレームワークを使えばいい。 有名どころではOpenSceneGraphとかOGREとか。他にも沢山ある。
90 名前:デフォルトの名無しさん [2009/07/30(木) 01:01:52 ] >>87 ごめんなさい。質問読み返したらわけが分からなかったので再質問 テクスチャ貼ってる正方形のオブジェクトに真っ白のテクスチャを貼っている状態(この状態だと見た目は白の正方形)のものがある ここで貼っているテクスチャをglTexSubImage2Dを用いて一部を塗り替える 塗り替えた部分を透明(オブジェクトの背景まで透ける)にするためにはどうしたらいいですか?
91 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 01:10:38 ] なんでアルファ使わないの?
92 名前:デフォルトの名無しさん [2009/07/30(木) 02:00:06 ] >>91 アルファ値を設定しても反映されないんです オブジェクトの色とか設定するときには反映されるんですが gltexsubimageで大きさ1*1にして1ピクセル分の要素(RGBA)を設定してるんですがRGBしか反映されません どんな原因があるでしょうか?
93 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 02:23:51 ] コードが間違っているんだろ
94 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 03:06:04 ] そもそもblendがらみの設定をしてない・おかしいとか、 texの大きさを2^nにあわせるのに失敗しているとか、 1ピクセル分の要素の元のメモリ側の配列と、glでテクスチャイメージとして送る際の設定が噛み合ってないとか いろいろありそう
95 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 03:16:05 ] 質問者は再現コードを提示すべき。 言ってることとやってることが違うのは良くあることだから。
96 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 10:22:37 ] アルファ付きのテクスチャフォーマットを指定してないとか
97 名前:m9('v`)ノ ◆6AkAkDHteU [2009/07/31(金) 05:16:34 ] >>89 「ここがダメだよ、OpenGL >>85 補足」 いや、ほら、OpenGL と Open GL ESじゃはっきり言って別物だしさ、 だって、openシーングラフなんてOpenGL ESじゃ使えねーし。 なんか背後の設計思想が未熟だよ。俺だったら、もっと抽象度高めて ESだろうが、バージョンが変わろうが、もっと透過度っつーのかな、 ともかく上手につくるね。 GLがポータビリティ高いなんて、大嘘だよ、絶対騙されるなよ。 もうJavaもObjCも、OpenGLと連携できますじゃなくて、自前のAPI設計 しろよ。やっぱできねーんじゃねーのかなw
98 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 05:25:41 ] >>97 > 自前のAPI設計 AGLのことか?
99 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 08:53:29 ] >>97 当然それぞれの仕様書は読んでるんだろうけど、気に入らないのはどの部分? 設計思想ってことは冒頭かな? 具体的におかしいとこ挙げてどう変わるべきか 書かなけりゃアンチが騒いでるだけにしか見えないよ
100 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 09:17:26 ] 「6AkAkDHteU」で検索すると面白いよ!
101 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 11:21:11 ] >>97 ううん・・・一言で言っちゃえば、 6AkAkDHteUさんにとって必要なのはOpenGLではない ってだけの話のような。 抽象度の高い、透過的なライブラリなら他にあるでしょ多分。知らんけど。 ちなみに自前のシーグラフライブラリは、ちょっと手直ししたらESでも いい感じに動いたよ。全然複雑な事やってないから、てのもあるけど。 winからiPhoneにそのまま持っていけて、便利便利。 でもって今はGL2.1/ES2.0で動くシーングラフライブラリを一から組み直し中。 シェーダ中心になると、高レベルレイヤの組み方からして変わってくるから GL1.x/ES1.xまで透過的に扱えるよう設計するのは、僕には難しかった・・・。 無理すればやれないことはないんだろうけど、手間の割に益無さそうだし。
102 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 11:50:54 ] 要するに、OpenGLが何のために定められている仕様なのか、理解できてないってことだな
103 名前:m9('v`)ノ ◆6AkAkDHteU [2009/07/31(金) 12:09:35 ] >>101 断言しる、藻前の技術力、相当なもんだ。 >>100 と>>102 については、もう「はぁ」って感じぃ〜 プログラミングのパラダイムって変わったんだよ。簡単に言うと、 EmacsからEclipseへってことだ。 とにもかくにも、OpenGLのバージョン間での透過性だけじゃなくて、 他のツールとの透過性も意識しなきゃもう時代遅れよ。GLには フレームワーク化の努力が決定的に欠けていた。 扱うためには、>>101 みたいな技術力持ってなきゃいかんっつぅのは もうAPIとして失格。 一言で言うと、3Dっていう概念を狭く取りすぎてるんだ。 もっと視野を広げて、シェーディング、モデリングを他のツールと 上手に連携しながら行う一つの環境っつぅか、パッケージの構築に 注力しなきゃいかん。 >>101 はどうよ? おまえ、凄いけど、もちっと遠くを見てOpenGL批判できる ぐらいでなきゃだめよ。つーか、お前ぐらいの技術力あるヤシにこそ、 そういう思想を身につけてもらいたい。 以上だ(一応、京大院卒)。
104 名前:デフォルトの名無しさん [2009/07/31(金) 12:14:25 ] 「6AkAkDHteU」で検索すると面白いよ!
105 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:19:09 ] フレームワークってのは枠にはまってるうちはいいが、 枠から外れることをする必要がでると途端に難しくなる フレームワークはフレームワークでいくらでも存在してていいが、 OpenGLのようなハードウェアと直接対話するローレベルなAPIも選択肢としては欲しい
106 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:52:22 ] おまえら釣られすぎだろ キチガイに構うなよ
107 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 14:00:31 ] てかシーングラフと3DCG関数群って 全然レイヤの違う話じゃないか。 何いってんだが。
108 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 14:11:10 ] 病院行きだな。 俺もスルーしよっと。
109 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 14:28:58 ] 夏だねっ!
110 名前:m9('v`)ノ ◆6AkAkDHteU [2009/07/31(金) 18:32:51 ] >>107 スレ違いかもしらんが・・・・行くよ、サンロクマルで・・・ まじ倒すよ、プレステを。
111 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:18:38 ] >>103 ぜひそのフレームワーク実装してくれ。 OpenGLもDirectXも使わずになw
112 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 00:48:18 ] OpenGLを批判できる俺かっこいいまで読んだ
113 名前:m9('v`)ノ ◆6AkAkDHteU [2009/08/01(土) 07:38:47 ] >>111 DirecXなんてさらに閉じた環境だな。オープン系なんて呼ぶなよ、ヴォケ。 まぁ、OpenGLの設計思想は完全な失敗だったね。 モデラーとの連携性悪すぎ、「動的スクリプティングの拡張」も無し、 OpenGL ESとのシームレスな継続性も酷いもんだ。 でもな、日本からこういった技術って生まれないよな。 >>105 の言うハードウェアとの「直接対話」って、結構見落とせない部分で、 その点ぢゃOpenGLの功績は評価できるレベルだと思う。でも90年初期から 進化がなかったよ。 ちょっとさ、俺の言うことに反論できないんぢゃ、どの情報工学科からも ドクターなんて絶対取得できないぜ。>ALL
114 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 07:43:27 ] OpenGLのポリゴンの上で動画(AVIとか)を再生したいのですが可能でしょうか。 参考になるコードありませんか。
115 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 07:59:11 ] >>113 >>1 を読め。禁止事項全てに該当するのでお前は出入り禁止だ。
116 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 08:01:32 ] >>114 普通に出来る。 mplayerなどはOpenGLバックエンドがあるからそのコードでも参考に。
117 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 08:03:20 ] >>113 結局、技術力&理解が無い上っ面だけの理屈ヤローじゃんw >モデラーとの連携性悪すぎ、「動的スクリプティングの拡張」も無し、 あのなOpenGLは低レベル描画APIで有って、 そんなのを求めてる時点で技術の無いクレクレ房なだけじゃん どっかのミドルウェアで、モデラーと連携して動的スクリプティングの拡張してあって GLとDXの切り替え付いてれば、GL選択して使えよw >OpenGL ESとのシームレスな継続性も酷いもんだ。 ESってのは組み込み向けなんだよ、前提としてるハードが全然違うの ネーミングの文句言うならともかく、お前はES、ESと言いたいだけだろw って感じ OpenGLとOpenGL ESを同列に扱おうとしてる時点で C++とアセンブラを同じ目線で語って文句言ってるようなもんだ ”アセンブラは酷いもんだ、クラスとか無いし”ってな感じww
118 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 08:20:39 ] 相手すんなよ
119 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 10:05:42 ] >>116 トン NeHeも探してたんですがLesson35にもありました。 そのサンプルも見てみます。
120 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:08:36 ] >>113 設計思想を理解できてないくせに設計思想を語るのやめようぜwww まず、仕様書を第一章から5分でいいから読んでみろ。 普通の英語力なら今お前が理解できていない内容について すべてを物語っている一言に到達できるだろう。 お前が言っているのはお米をつくっている農家に対して 「これからはおにぎりだ、海苔がないなんて考えられない、 お米なんてつくったってダメじゃん、アハハ〜」 といっているのと同じことだってことだ。 理解できたら自分のバカさ加減を認識してとっとと去ね。 理解できなかったら自分の理解力のなさを認識してとっとと去ね。 さて、これで俺もあらし認定決定だし、消え去るといたしますかなw
121 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:31:49 ] >>113 OpenGLってのは3Dソフトウェアから見れば最下層のAPIで、 3Dじゃないソフトウェアで言うなら、BIOSみたいなもんだよ。 APIやプログラミングモデル自体に不満(ステート変更が頻雑になるとか バッファの扱いが面倒だとかシェーダの直行性が保てないだとか)があるなら ともかく、そんな高レベルの話はOpenGLの範疇外だよ。 BIOSに対して「スクリプトで拡張できない!」とか言い出すヒトはいないでしょ。 (あ、でもBIOSがスクリプトで拡張できたら面白いナ・・・) あと、ESとの継続性(?)って、具体的に何が不満なのかな。 全く同じソースコードが動くようにするなら、わざわざESなんて作る必要性が 無いわけで(笑)ある程度書き換えないといけないのは当たり前かと。 それよりも、API名やプログラミングモデルが共通なので今までのノウハウが そのまま使えるというのが重要なんだと思いますが。 >>117 OpenGLとOpenGL ESの違いを、C++とアセンブラの違いに例えるのは いかがなものかと・・・。
122 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:46:00 ] >>121 > (あ、でもBIOSがスクリプトで拡張できたら面白いナ・・・) っ Extensible Firmware Interface > API名やプログラミングモデルが共通なので 1.1赤本くらいしか読んでいなかった人は面食らったと思う。俺とか。 まあすぐに適応したけどラッパー類の構造はかなり書き直しが必要だったな。 OpenGLがC++だとしたらESは生Cくらいの印象かなあ。
123 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:37:30 ] >>122 EFIは、スクリプティングとはちと違うような。 スレ違いになるけどEFIって現状どうなってるんだろ。普及してんのかなw ラッパの書き直しのとき、ESでは使えない機能の場合は置いておいて、 例えばglDrawElementsでインデクスのtypeにGL_UNSIGNED_INTが使えない みたいな制限があった場合、どうしました? 1.ラッパのAPIを、GL_UNSIGNED_SHORTまでに制限する 2.ラッパの内部でintのインデクスをshortに作り直す 僕はもう面倒臭いんで1.を採用することが多いんですがw
124 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:04:19 ] >>123 俺はmacも使うからEFI搭載マシンを使っていることになるな。 かといっていじれないから恩恵は受けていないのだがw 2にすると一つだけ問題があって、PSPとかiPhoneみたいなハード側の制限が厳しい環境だと、 最適化が甘いと露骨にパフォーマンスを悪化させるという点ですかね。実際2をやるんだけどさ。 多分最適な方法はラッパ側でtypedefしちゃって対象ごとに切り替えちゃうことなんだけど、 Cは精度が落ちる暗黙の変換が緩いので想定外のバグを生む可能性は知っていないとならない。
125 名前:m9('v`)ノ ◆6AkAkDHteU [2009/08/01(土) 19:41:09 ] >>117 先ず日本語ちゃんと使えるようにしような。その語学力じゃOpenGLは ちとキツイだろ? つぅか、おま、OpenGLの思想どころかエンジニアリングって何なのか 理解できてねぇつーか、理解不能なんだな。オタク工学部出身だと したら5流大出だろ(俺、いちお京大院修了済み)。 俺はOpenGLがGLだった頃から知ってんだ。 言語は言語にとどまっちゃいかんのよ、その先へ行かなきゃ。Javaは それで失敗したけどな。 OpenGLにはフレームワークっていぅ概念さえないぢゃん。だめだよ、 この程度ぢゃ・・・・はっきりいって駄作だ。
126 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:10:12 ] もう触れるなよ、約束だ
127 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:30:43 ] じゃね
128 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:31:57 ] > OpenGLがGLだった頃 何時だ
129 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:33:38 ] 古参を気取るようなおっさんが「ぢゃ」とか使ってるのは気持ちが悪い。
130 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:34:13 ] >>452 死ね
131 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:02:39 ] >>125 おまえ、「フレームワーク」って言葉を最近覚えて気に入っちゃったみたいだけど 言葉の意味ちゃんと理解してる?w OpenGLはグラフィックハードウェアの機能・構成に対するフレームワークとして 十分その役割を果たしているだろ。 あと、ここのスレの奴らがいろいろ教えてくれてるの、ちゃんと読んでるか? 読んでて>>125 のレス出してるなら理解力0のバカ(関西における意味で)だぞ。 もう一つ、GLの頃から知っているって主張するのは、かなり前から知っているけど なんにも理解できていないんですって主張しているようなもんだから、やめときなw
132 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:30:04 ] 相手する奴も同罪
133 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:31:30 ] 125がバカだとは思うが、openGLはフレームワークではないだろ。 べつにフレームワークが偉いわけでも、そうでないといけないわけでもないし 低レベルなステート操作なAPIだからこそ息が長く汎用性もあるとも言えんじゃね
134 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:42:34 ] そんだけ長い間この分野に関わっておきながら、いまだ機能の階層構造という 概念の理解に到達しない人間がいるということに驚かされる。 しかもそれでエンジニアリングを語るとか、一体どうなってるんだ。京大パネェ
135 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:00:39 ] 京大修士が2chのスレでこれほど痛い書き込みをするほど余裕が 無いとはにわかに信じがたい話だ
136 名前:m9('v`)ノ ◆6AkAkDHteU [2009/08/01(土) 22:02:05 ] >>134 いや、俺は京大学派に属してても、亜種っつぅかさ、系統図じゃ上のほうに 属してるんだ。 多いよ、APIだからどうのとかいってさ、言語ないしは計算機環境の 設計にまで思い至らない連中がさ。NECや富士通とかの技術者がその程度 なんだよ。 低レベルI/Oの処理とかさ、バカなこと言ってねぇで、もっと視野広げると 楽しいよ。ほんと。ま、無理だろうけど。
137 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:08:06 ] ここでグチグチ言われても鬱陶しいだけなんだが。 なにが気に食わないのかしらないが、自分で行動を起こせばいいだろ
138 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:13:58 ] 136は134の日本語が理解できないようだ
139 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:33:42 ] 京大院卒→ 京大院修了済み→ 京大学派
140 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:38:06 ] 要は京大に喰い付いて欲しいんだろ。 学があるだのないだのみたいな。 お前ら好きだろそういうの、がんばれよ。
141 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:49:19 ] じゃあここで東大院CG系研究室の俺が颯爽と
142 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:09:36 ] じゃあ東工大院でCGとは全く関係無かった俺はひっそりと
143 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:32:58 ] 学歴の話はスレ違い、そろそろ余所でやってくれ
144 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:39:16 ] 赤本7版ひどいな www.amazon.com/OpenGL-Programming-Guide-Official-Learning/dp/0321552628
145 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:56:04 ] >>141 ラジオシティ法の命名の件で愚痴る先生の研究室ですねわかります。
146 名前:131 mailto:sage [2009/08/02(日) 00:02:00 ] >>133 >openGLはフレームワークではないだろ。 うん、まあね。 「OpenGLのパイプラインの処理モデルをホストのシステムと協力して実現できる ことがグラフィックハードウェアに課せられている」という意味で書いたんだけど、 これって現実的にはなんの制限にもなってないよねw そもそもGPUなんてなくたってCPUに処理させちゃっていいってことなんだし。 まあ、バカをバカにしてみたかったバカの発言ってことでお許しくださいw
147 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 00:13:55 ] >>136 は >>129 に指摘されて言葉改めたのか?w もうちょっと頑張れよwww てか、お前何話してんの?OpenGLの話しようぜ。
148 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 00:38:58 ] >>145 いや、元自分の研究室の学生と結婚しちゃった新進気鋭の若手先生のとこかもw
149 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:19:18 ] 何?>>136 って>>134 で対象となっている人間が自分だって気付いていないってこと? スゲェな
150 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:51:46 ] >>141 ,145,148 こんなに東大のCG研の人間がいたらそりゃあ馬鹿は袋叩きに遭うわけだwww
151 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 02:36:17 ] ここでもう一人東大関係者登場。 東大は駒場の馬鹿のせいで全学2chへの投稿が弾かれているはずだ。 お前らフシアナも出来ないはずですよ! m9('v`)ノ
152 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 02:42:53 ] いあ、解除されてる。試しにふしあなしてみろ。
153 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 05:24:51 ] 珍しく伸びてるから何かと思えば
154 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 07:02:40 ] ♪Et de l'Étoile à la Concorde, un orchestre à mille cordes ♪Tous les oiseaux du point du jour chantent l'amour ♪Aux Champs-Elysées, aux Champs-Elysées ♪Au soleil, sous la pluie, à midi ou à minuit ♪Il y a tout ce que vous voulez aux Champs-Elysées
155 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 10:12:15 ] なにこの街の遊撃手のCM
156 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:27:27 ] あの見事な車のCMのか
157 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 22:01:55 ] glReadPixelsとかglTexImage2Dとかを使う回数はやっぱり抑えたほうがいいの?
158 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:11:33 ] 必要なだけやればいい。 他の方法で代替できるならそうしたほうが良い場合もある
159 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:21:10 ] >>157 可能な限り抑えた方がいいです
160 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 01:21:16 ] glDrawPixelsとテクスチャ付き矩形で比較すると、同時間で描画できるピクセル数が10倍以上違うのが普通。 Vista世代のオンボカードでもglDrawPixelsじゃ1フレームで画面の1/4程度(500x500)の面積しか描けない。 バスが細いネットブック向けだと200x200がせいぜいじゃないかな。
161 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 01:43:53 ] glDrawPixelsにはそれを使うのに適した時があるから、テクスチャ矩形と速度比較しても意味無い てか、オンボカードってなに?
162 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 01:49:40 ] オンボカード失礼しました まあ、基本的にはキャッシュすればいいものはキャッシュするに越したことはないということですわな
163 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 02:36:57 ] PBO使えばおk
164 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 01:35:53 ] OpenGL 3.2発表されたらしいね。Geometry Shaderも入ったとか。 これでAMDも言い訳できまい。さっさと実装汁。
165 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 02:15:22 ] 質問です。 マルチテクスチャの機能を使って、4枚のテクスチャを混ぜようとしていますが、 2枚のテクスチャを混ぜることはできたものの、3枚以上を混ぜる方法が分かりません。 ググったりしてみたのですが、見つけたサンプルは2枚のものばかりでした。 どなたか、3枚以上のマルチテクスチャマッピングを教えて下さい。 シングルパスでできれば、さらに嬉しいです。
166 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 03:12:48 ] AMDまだGS実装してなかったのかよw
167 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 03:21:52 ] >>165 シェーダーで 使わなくてもできるだろうけど、個別の調整とかその後の拡張を考えたら、素直な実装はシェーダーの時代かと
168 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 01:45:45 ] >>165 2枚が出来るなら3枚でもできるんじゃね? glActiveTextureのGL_TEXTURE0とかGL_TEXTURE1とかなってるところを GL_TEXTURE2とかGL_TEXTURE3に増やして同じことやればいいだけ ちゃんと2枚のサンプルを理解していればいけるはずだ
169 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:25:39 ] なんか今年はOpenGLに勢いが感じられるね。
170 名前:デフォルトの名無しさん [2009/08/05(水) 19:21:28 ] main関数内のglutMainLoop(); に入ったらすぐにエラーか何かでプログラムが終了してしまいます。 何が原因なんでしょう? 下のようなメッセージが出ているのですが関係あるんでしょうか? 'C:\WINDOWS\system\glut32.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。 'C:\WINDOWS\system32\nvoglnt.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
171 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 20:15:48 ] WebGLが面白そうだ
172 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:10:11 ] 複数のパスを使ったシェーダーを記述するのに使う標準形式ってないんですか? COLLADA FXというのがあるみたいですが、どういうものなのかよく分かりません。 自分のプログラムに使えるんでしょうか。 シェーダーを記述するのに使うツールって何使えばいいんでしょうか。 現在AMDのRenderMonkeyしか知りません。NVIDIAはFX Composerというのがあるみたいですが HLSLのみで、GLSLは対応していなかった気がします。
173 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:59:21 ] Texture Unitが二つしかない環境で開発してるとか?<165
174 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 00:24:31 ] >>170 エラーか何かで終了するだけじゃわかりません。正常終了かもしれません。 そのメッセージは関係ありません。 >>172 特に標準形式といったものはない とにかく複数のパス用のシェーダを通せばいいだけなので何でもいいとも言える COLLADAでもいいけど読み込むのは結構面倒 GLSLじゃなくてCgでもいいならCgFXが読み込みは楽だよ
175 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 04:28:32 ] int main(void){ /* コールバックとか色々中略 */ glutTimerFunc(16, timer, 0); glutMainLoop(); } void timer(int value){ glutPostRedisplay(); glutTimerFunc(16, timer, 0); } GLUTの解説サイトによくあるコードなのですが、 glutTimerFuncをこのように利用すると、メモリリークする症状が見受けられました。 他の関数での末尾再帰はコンパイラで最適化されて起こりません。 関数の仕様なのでしょうか?
176 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 04:42:34 ] スクリーンの特定の領域だけをアップデートする方法はありませんか
177 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 04:47:14 ] glScissor()を使え
178 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 05:02:44 ] >>175 メモリーリークなどしません。原因は他にあるのでデバッグしてください
179 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 05:07:26 ] >>175 timer()が末尾再帰しているとでも言いたいのか? そもそも末尾再帰なんて全く関係ない。普通にデバッグしろ。
180 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 06:45:58 ] おおかたDisplay関数あたりで肥大してんじゃねーの?
181 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:55:07 ] >>172 CgFXをVisualStudio用のHSLS記述アドオンのInteliShadeで書いてる。 今の所ソースの色分けと関数の折りたたみと組み込み型、関数のインテリセンスぐらいしか利かないけど、 3.2が出るのが待ち遠しい。
182 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 13:54:29 ] >>177 ありがとうございますだ 特定のピクセルに点を打ちたいときはどうすればいいんでしょう pixelAt(int x, int y) のような感じでスクリーンの左上からx,yの位置にあるピクセルに点を打ちたいのです
183 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:11:13 ] >>182 手っ取り早いのはglRasterPos+glDrawPixels/glBitmapの組み合わせ。 ただし基本的にはノース経由のバスで座標データがやり取りされるから、そこがボトルネックになって遅くなるのは確か。 すでに送ってあるテクスチャとかをpix to pixに書くには、 射影行列をロールバックしてorthoな射影で書いて、 その後射影行列を元に戻すといった操作が有効。 auxバッファに蓄積してglCopyPixelsを使うという手もある
184 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:12:54 ] >>182 glRasterPos2*()/glWindowPos2*()とglDrawPixels()でいける glScissor()もそうだが、もうこういうことは全部シェーダーでやる時代なんだよな
185 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:48:24 ] >>183 >>184 glRasterPos2fとglDrawPixelsで動作を実現できました ありがとー
186 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:59:18 ] GSLS ESにて、画像の2値化を シェーダでやってみたいのですが可能でしょうか。 無知な初心者で申し訳ございませんが、 ご教授お願い致します。
187 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:29:00 ] 二値化したい画像をテクスチャとしてバインド ピクセルシェーダで二値化しつつ描画 でおk
188 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 09:21:54 ] >>187 さん ご回答ありがとうございます。 処理フローはなんとなくイメージできたのですが "ピクセルシェーダにてニ値化する"点について 詳しくご解説して頂けませんでしょうか。
189 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:57:35 ] >>188 vec3 tcol = テクスチャから拾ってきた色; if (どっちの色?(tcol)) ( gl_FragColor = 色1; ) else ( gl_FragColor = 色2; ) ってやるだけ
190 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:48:54 ] >>189 さん ご解説ありがとうございます。 あとは、参考書片手にやってみます。 ご丁寧にありがとうございました。
191 名前:189 mailto:sage [2009/08/08(土) 16:23:07 ] ゴメン突っ込まれる前に一つ言い訳させて ifの複文の{}が()になってるのは単なる打ち間違いデスorz 自分の使ってるキーボード、(){}[]が全て同じキーなもので(修飾キーで打ち分ける) しかも古いCRTのフォーカスが甘くなってて打ち間違いに気付かなかった もういい加減LCDに買い換えるか・・・
192 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 03:48:44 ] このスレではGSLSとかHSLSって書くの流行ってるの?
193 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:24:35 ] OpenGLでWebサイトを表示したりできないでしょうか。 ポリゴンの上にHTMLをレンダリングしたいのですが。
194 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:25:42 ] OpenGL利用してる方々、衝突判定について、質問させて頂きます(あえて、数学板ではなくて)。3次元座標上の 一点が移動前と移動後で、ある平面上の三角形と衝突しているかどうかです。 移動前の座標:P0=[x0, y0, z0]、移動後の座標:P1=[x1, y1, z1] 平面:aX + bY + cZ = D 上にある三角形[x2, y2, z2], [x3, y3, z3], [x4, y4, z4] 1)まず平面を通過したかどうか判定 2)平面上の通過点を求める 3)その通過点が三角形内部にあるかどうを判定 で、質問は1)なんですが、教科書によると、平面の法線ベクトルN=[a, b, c]とP0、P1の内積を使ってP0・N + D とP1・N + Dの積が負だと1)の判定に合格するのですが、どうしてDを足すのかが理解できません。 衝突判定で悩んだ方、どうかお助けください。よろしくおながいしますだ。
195 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:31:06 ] それ足すんじゃなくて引くべきじゃないか? aX + bY + cZ + D = 0なら兎も角
196 名前:デフォルトの名無しさん [2009/08/09(日) 11:12:39 ] >>195 さん、どうもありがとうございます。教科書によるとDは加算になっています。 float locationToPlane(float triangle[3], float againstLocation[3]) { float normal[3]; triangleNormal(triangle, normal); // 平面の法線ベクトル算出 float A = normal[0] * triangle[0]; float B = normal[1] * triangle[1]; float C = normal[2] * triangle[2]; float D = A + B + C; return DOT(normal, againstLocation) + D; // DOTは内積の計算 } 上のようになっていて、(P0・N + D)×(P1・N + D) < 0 だと平面を通過したことになるそうです。 この方法(アルゴリズム)を是非理解したいのですが、みなさんよろしくおながいしますだ。
197 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:30:05 ] >>196 >>195 のいうように、その場合の 平面の方程式は「aX + bY + cZ + D = 0」で 「aX + bY + cZ = D」が間違ってるんだろ。 しかし、>>196 のコードは意味不明だなぁ。
198 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:44:45 ] 教科書が間違ってるか、194さんが教科書を読み間違ってるかのどっちかでしょうねぇ。 平面の方程式を aX + bY + cZ = D と置いたなら、表裏判定は aX + bY + cZ - D > 0 ? になるし、 aX + bY + cZ + D = 0 と置いたなら、表裏判定は aX + bY + cZ + D > 0 ? になりますよ。 >>196 のコードは>>194 の1)とは関係無いっぽいし、なんか194さん勘違いしてるんじゃないかな。
199 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:46:49 ] >>197 さん、どうもありがとうございます。>>194 の平面式の部分は私が書いたのですが、教科書の著者は aX + bY + cZ - D = 0 を念頭に置いていたみたいですね。>>195 さんが正しいです。すみません。 >>196 のC言語関数は、aX + bY + cZ - D = 0 に通過前の点 P0=[x0, y0, z0] を代入しているのだと思います。内積という言葉が教科書で使われていましたから、それで混乱してしまって。 でも、同じように通過後の点 P1=[x1, y1, z1] を代入して、result0×result1 < 0 だと平面通過判定合格なんですが、どうしてそうなるのかがわかりません。証明を知りたいんですが、どなたかよろしくおながいしますだ。
200 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:50:53 ] >>198 おお、どうもありがとうございます。 Cの関数>>196 で使っているtriangleは平面上にありますので、それで法線ベクトル[a, b, c]を算出してるんです。 すみません、>>198 さんのおかげで理解できました。表裏判定してて、それで積が負になると平面通過判定合格なんでつね! みんなありがとう!!!恥かいたけど、聞いてよかた。 ^^;
201 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:52:56 ] |↑(a, b, c, D)・↑(x, y, z, 1)/sqrt(a^2+b^2+c^2)| が平面 0 = aX+bY+cZ+D と点(x, y, z) の距離を表すって知ってるかな? 分からないなら手計算で解いてみ(実はコレ小学校で習うけど)。
202 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:04:44 ] >>Cの関数>>196 で使っているtriangleは平面上にありますので、それで法線ベクトル[a, b, c]を算出してるんです。 細かいことなんでスルーでいいんだけど、平面上の1点から法線は出せないだろ。 少なくとも3点無いと。
203 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:13:15 ] > float triangle[3] こりゃ確かにおかしいなw float triangle[3][3] とかしないと
204 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:18:02 ] >>202-203 みなさん、本当ご親切にありがとうございます・・・・ また、わからなくなってしまいました。ちょっと他のコードも調査してみます。 ^^;
205 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:30:08 ] >>202-203 さん、わかりました。教科書>>196 間違ってます!引数のとこで配列サイズ指定する必要無し ですね!正しくは、3を9に変えるか、3を消去するかですね。 float locationToPlane(float triangle[9], float againstLocation[3]) { float normal[3]; triangleNormal(triangle, normal); float A = normal[0] * triangle[0]; float B = normal[1] * triangle[1]; float C = normal[2] * triangle[2]; float D = A + B + C; return DOT(normal, againstLocation) + D; }
206 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:35:12 ] >>205 > float D = A + B + C; ここでそうするなら > return DOT(normal, againstLocation) + D; ここでは引け
207 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:38:38 ] >>205 だね〜。 で、あとは例えば、 その関数locationToPlane()に、againstLocationとして3頂点のうち1点を渡してみて ちゃんとゼロが変えればOKだね。
208 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:40:26 ] >>206 さん、どうもです。教科書、間違いだらけですね。 ^^; しかし、>>205 の問題ってGCC警告出してくれないんですもん。
209 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:45:49 ] それ書籍とかじゃなくて誰かの落書きじゃないのか?
210 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 13:39:46 ] >>205 でも、typedefさえしないのけ。 typedef struct { float x, y, z; } point; openglってこういうことしねーよな。実行速度なんて変わらんよ。 readabilityっていう概念0だな。
211 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 13:42:26 ] そもそもOpenGLの話しじゃないからな
212 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 13:55:19 ] いや、openglのコードって、vertex扱うのもfloat[3]だろ。 けっきょく配列のindex使ってんだから、構造体使っても速度同じ変わらんって。
213 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:08:35 ] 線形代数ライブラリは、車輪の再発明多いし 標準化してもらってもいいかもね。 つーかboost::ublasが以外に使いやすいんでお勧め。 matrix4x4程度で速度が出るのかはわからんが。
214 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:55:16 ] >>213 でもグラボ(OpenGL対応の)って、日本のメーカーもつくってんだからさ、 NECとか富士通(も?)、日本からこういう技術を発展させるような動きって 出てこないのかね。 東大を始め、CGの世界じゃ日本の研究機関ってプレーヤーでさえ無いんだよな。
215 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:58:24 ] >>213 線形代数ライブラリは、CPUのベクトルユニットを使う/使わないの判断が 個々人に委ねられるというのも大きいし、標準化はし辛いんじゃないかな。 それに、頂点列やピクセルデータは単なるfloat(とかbyteとか・・・)の配列である。 っていうのがOpenGLのポリシーであるように感じられる。 自分で作っても大した規模にならないし、面倒なら>>3 あたりやboost::ublasを使えばいいし ってことで、今後も標準化は無いんだろーなーと。個人的にも必要性を感じない。 あー、京大の人のコメントは要りませんよ。
216 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 15:15:04 ] 使うときには普通に>>210 みたいにするけど、openGLの仕様で決まってると不便じゃないかな CやC++専用じゃないんだし
217 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 15:47:20 ] 俺もちょっと前にそれで悩んだ。 C用で、そこそこのパフォーマンスが出て、非GPLでとなると選択肢はほとんど無いのよね。 結局、 #define LOOP4(m) m(1) m(2) m(3) m(4) #define LOOP44(m) \ m(1,1) m(1,2) m(1,3) m(1,4) \ m(2,1) m(2,2) m(2,3) m(2,4) \ m(3,1) m(3,2) m(3,3) m(3,4) \ m(4,1) m(4,2) m(4,3) m(4,4) #define LOOP444(m) …… みたいなマクロを定義して、 #define VEC_DEF_ITER(i) typedef GLfloat vec##i[i]; LOOP4(VEC_DEF_ITER); #undef VEC_DEF_ITER #define MAT_DEF_ITER(i, j) typedef GLfloat mat##i##j[i][j]; LOOP44(MAT_DEF_ITER); #undef MAT_DEF_ITER と自前で作っちゃった。
218 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:02:47 ] >>217 だめだだめだ、そんなんreadabilityゼロだ。 日本はCGの世界ぢゃ、全然相手にされてないんよ。 俺、素粒子の物理屋だけどさ、欧米のCG関連の学会出てごらん。 日本の論文なんて引用ゼロに近いし、なんかsiigraphなんかでも通過してる 日本人研究者の論文ってほんとお情けで通してもらったってのがミエミエ。 ひどいよ、特に曲線曲面の理論発展には日本人の寄与度ゼロだと断言できる。 >>215 京大もこの分野ぢゃ東大と同じく、プレーヤーでさえないよ。 物理畑じゃお互い世界で認められてるけどな。
219 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:05:57 ] また変なのが釣れた……
220 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:09:32 ] 東大 京大はNG推奨
221 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:12:46 ] またというか同じ人だろうな
222 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:14:21 ] GLには哲学が無いよ。設計者がシリコングラフィックス社っていう、糞ベンチャーの 先駆けにいた三流エンジニアだからな。 抽象化のなんたるかが分かってねーし、設計っていう概念もないからフレームワーク化にまで 頭が回らないつーか、お粗末で頭が回転しない。 それで日本だが、こんな出来損ないの技術を信奉してる連中が拡大再生産されてる現状を俺は 憂う。別に京大を棚に上げるわけぢゃないが、東大をはじめ、CG関係の教育がマジ貧しい。特に 高等教育がぜんぜんだめだ。GL学生に教えてイェーイ、マテマティカ大金出して(国立だと税金)買って 線分画面にさせるスクリプト学生に書かせただけで(しかも2Dで)イェーイなんての ばっかだ。 CGの分野じゃ日本は完敗よ。数学力の問題だとネラどもは言うかもしらんが、そうじゃないんだ。 設計っていうのはな、つまるところ哲学・抽象的思惟能力に左右されるんだ。 物理屋の俺に指摘されてもハッとこない連中、特にNECやSCE、富士通、あと ジャパネットたかたあたりで細々と開発してる連中、おまえらはプレやーでさえない。
223 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:16:16 ] じゃあスルーして、お前ら結局ベクトル型どうしてるの? boost::ublasって固定長ベクトルできないよね? なんか無駄しちゃってる気がするんだよね。
224 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:17:37 ] コピペ乙
225 名前:デフォルトの名無しさん mailto:age [2009/08/09(日) 16:19:16 ] いや、物理屋に言わせるとさ、日本のCG関連の技術者・研究者、税金ドロボー してんぢゃねーっつぅの!!! まじで。 研究でCG関連の技術俺等も使うこと、多いんだけどさ、お前等マジ何してんだよ って感じぃ。
226 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:27:36 ] >>223 3次元ベクトルは自作したのを使ってる。
227 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:23:11 ] 皆さんに質問です。最近OpenGLを使って3Dのアプリケーションを作って 遊んだりしています。その過程で、グラフィック関係の記事やblogを見 てシェーダーというものがあるのを知りました。私はこれも興味をひか れているですが、ネット上の記述や説明では私には理解できません。 シェーダーとは何のためにあり、どんなことができるのでしょう? OpenGLでコードを描くよりも優れているのでしょうか?
228 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:37:57 ] >>227 調べたら普通に概念程度ならわかる気がするけど。 簡単に言えば、シェーダーを自前で書かない場合はOpenGL標準のライティングでしか絵を表現できないけど、シェーダーを自分で書くことによって自分好みのライティングにできる。(←これをプログラマブルシェーダーと言う。) OpenGLに対応するシェーダーとしてはGLSL等があって、それらはOpenGLと組み合わされるものであって単独で何かができるものではない。 ここではライティングについて言ったけど、実際にはシェーダーの応用で2次元・3次元ともに様々な表現ができるようになる。
229 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:40:37 ] 技術の外延が分かってないなあという意味では、 床井先生のところでバンプマッピングを静止画で出してたのは、あんま意味ないかなと思った。 「どの方向に光源があってもそれっぽいテクスチャが付く」ことが技術の肝だから、 光源に対して物体を動かしたときにこそ質感に大きな差が出るんだけどね。
230 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:15:23 ] >>227 まず、OpenGLのパイプラインアーキテクチャは分かるかな? バーテックスシェーダは、「頂点単位の座標変換とライティング計算」を一般化したもの、 フラグメンテシェーダは、「フラグメントに対するテクスチャ適用」ステージを一般化したもの なんだけど、上の括弧書きした部分が何を言ってるのか分からないようだと、シェーダの利点を 挙げても、???って感じになっちゃうと思う。
231 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:21:00 ] >>216 C以外でも使えるよう十分に低レベルなAPIにしたら、 逆にJavaでそのままのカタチでは使えなくなってしまったという罠ww 難しいもんだねぇ‥‥ あと放ったらかしになってる>>193 なんらかのHTMLレンダラで絵を作るとこまでいけば、それをテクスチャにして表示できますよ ‥‥ってもしかしてGLでHTMLのレンダリングそのものをやりたいって話?
232 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 21:21:21 ] GLSLで書いたシェーダプログラムって、 画面描画の際に勝手に動いているって解釈で会っていますか?
233 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 21:39:14 ] >>232 大体合ってるw VSなら頂点一つずつ、FSならフラグメント一つずつごとに、 同じシェーダがそれぞれ動作するよ
234 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:00:09 ] >>233 さん ありがとうございます。 OPENGL ESで画像を表示しようとしたらglDrawPixelsが サポートされてなくて困っています。 だれか解決案を教えて頂けませんか。
235 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:02:03 ] テクスチャを作って描画するしかないねぇ
236 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:19:06 ] >>228 >>230 ありがとうございます。ただ、正直???てな感じです。赤本読み直します。
237 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:21:49 ] >>235 むしろ、ESでないとしても、同じ画像を何回も表示するならテクスチャに貼ってVRAMにキャッシュしておくこと推奨だよな。 Orthoに戻すのが面倒ではあるが。
238 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 03:33:56 ] >>229 バンプの意味は「どの方向に光源があっても」じゃなくて、 「張られた面がどの方向を向いていても」それっぽい影がつくってことだと思うけど。 だから静止画でも立体に張ってれば効果はよくわかるからいいじゃんよ。
239 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 09:14:27 ] どちらにしろバンプマッピングはグリグリ回してみないと実感はしにくいね。 発展して視差遮蔽マッピングになってしまうけどDirectX SDKのサンプルにわかりやすいのがあったな。 OpenGLとしてもOpenTKのフォーラムに視差遮蔽マッピングのサンプルがあった。
240 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 09:34:45 ] 鶏を割くに焉んぞ牛刀を用いん
241 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 20:33:34 ] 尼で頼んでたOpenGL Library、発売日とっくに過ぎてるのに中々発送しねーなと思ってたら、 発送予定日が23日になったとかメールが来た。 夏休みに読もうと思ってたのにkonozamaかよ。
242 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 21:32:46 ] >>237 VRAMにキャッシュ?! mallocのことでしょ? なんか特別な操作するの?
243 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:17:00 ] alb.hp.infoseek.co.jp/opengl_fbo.html Depthしか使わない場合のFBOの設定の仕方が書いてありますが、 逆にColorしか使わないときはどうするんですか? GeForce FXだとFBOは対応しているのにNPOTが未対応のようですが これだと描画するときにテクスチャ座標の指定が面倒そうです
244 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:24:52 ] >>242 ええー‥‥。 237さんの言ってること‥‥分からないですか??
245 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:47:32 ] >>244 そんな意地の悪いこと言わなくても・・・
246 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 23:00:27 ] んあー。意地悪かったのだろうか。 ごめん、別にそういうつもりは無かったんだけど‥‥ちょっと、ビックリしちゃったもんで。
247 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 23:06:03 ] 別に意地悪じゃないだろ。 glTexImage*()が何をするのかを全く理解していないようだから しっかり赤本読んでおけ。
248 名前:デフォルトの名無しさん mailto:age [2009/08/10(月) 23:28:32 ] お前等、また同じ過ち犯してるよ。 木を見て森を見ずだ! もっと視野ひろげようよ。 そんなどこのメモリに領域確保しようが、そんなこん抽象化して 使いやすくしとかんきゃ、そらもうAPIとして失格なんよ。 まぁ、OpenGL作った連中に頭が上がらんのが殆どだからな。 東大を始めCG関連、日本の技術は貢献度ゼロだ。よっておまえらの 程度が低いのも当然だな。 設計が何かってわかってないよ、設計とは何かが。
249 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 23:40:06 ] >>248 >>1 を読め。荒らしはお断りです。
250 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 23:43:36 ] >>249 だからー。おかしな人に触れちゃダメだってばー。 どうせ何言っても無駄なの分かってるでそ?
251 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 00:42:52 ] ここまで自演
252 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 00:46:46 ] >>251 こいつが一番頭がおかしい
253 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 07:47:34 ] またバカが湧いているのね。 小学校の夏休みが終わるまでしばらくこんな感じか。
254 名前:m9('v`)ノ ◆6AkAkDHteU mailto:age [2009/08/11(火) 21:41:28 ] >>249-253 おまえら、結局思想的に、つーか哲学がねぇんだよ。 だからOpGLをありがたーく使ってりゃいいんだよ。 まぁ、NECや富士通の技術者なんてこの程度かこれ以下 なんだろうなw 哲学がねーよ、哲学が。
255 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 01:25:11 ] お、今日はコテがついたw
256 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 07:39:15 ] マウスで中のオブジェクトを動かすのってどういう方法がオススメですか?
257 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 07:40:00 ] >>256 ごめんなさい マウスで中の→マウスで描画領域の中の です
258 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 07:50:24 ] ピックアップでggrks
259 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 14:49:32 ] openglレベルだと「セレクション」じゃないかな? 私は使ったことないけど
260 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 15:12:40 ] というか沢山あるオブジェクトの中から一部だけをピッキングしたいなら セレクションを使うけど、シーン内のオブジェクト全体をを回転/移動/ スケーリングしたいだけなら、virtual trackballが便利。適当にググれば コードでも数式でも出てくると思う。
261 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:08:59 ] >>260 256-257からどっちの意味なのか読み取れないからメンドクセと思って 私はレスしなかったけど、あなたは親切だねぇ。 (ちょっと話それますよ) セレクションて最初はすっごい便利なんだけど、段々アプリが成長して 構造が込み入ってくると、そのうち限界がくるんだよね。 そうなるとシーングラフが欲しくなってくる。というかシーングラフってほとんど ピック処理とか当たり判定だけのために欲しい。(描画だけならSGイラネw) ‥‥が、シェーダ流行な昨今、シーングラフはバーテックスシェーダと相性が悪い。 (gl_Position = ftransform(); なシェーダなら問題無いですけど) その辺うまくやってる方っていらっしゃいます? 当たり判定用オブジェクトは表示データとは別、って割り切るしか無いのかなぁ。
262 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:28:23 ] すまん。ピッキングの実装にセレクションが使われるものと 思ってるんだけど、あってる? そういう考えで、「openglレベルなら」って書いたんだけど。
263 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:42:17 ] >>262 >ピッキングの実装にセレクションが使われるもの ピッキングの実装にセレクションを利用することができる、という意味では合ってるし、 ピッキングの実装にセレクションを利用する必要は無い、という意味では間違ってるかな。 >>259 の書き方には特に問題無いと思うます。
264 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 19:27:53 ] >>263 レスありがとう。 よく分かった。
265 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 17:02:01 ] windows XP、デュアルディスプレイ環境で glutFullScreenでフルスクリーン化をしているんですが、 メインディスプレイでフルスクリーン化してしまいます。 サブディスプレイでフルスクリーン化したいのですがどのような方法がありますか?
266 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 18:36:47 ] >>265 FindWindow()かなんかでウィンドウハンドルをとってきて SetWindowLongとかSetWindowPosで枠無しにしてサブディスプレイのフルスクリーンに合わせる サブウィンドウのサイズはEnumDisplayMonitors()で拾ってこれるみたい 検証してないんでglutの内部で持ってるウィンドウ情報と実際のウィンドウがずれるからなんか問題おきるかも 大丈夫な気もするけど
267 名前:デフォルトの名無しさん [2009/08/13(木) 23:58:10 ] AndroidでOpenGL ESの勉強始めたんだけど、 AndroidにはglRenderMode()がなくて、セレクションとか フィードバックが使えないみたい。 OpenGL ESの1.0とか1.1ぐらいだと、 ピックアップする方法ってみんなどうやってるの?
268 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 04:12:53 ] >>266 おお、検証してみます ありがとうございます
269 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 10:38:02 ] >>267 ピックは本来GLと関係無い処理なので、純粋に幾何学計算で交差判定をします。 一応、オブジェクトごとに固有の色(IDの代わり)でレンダリングしてglReadPixels()する という方法も無いではないけど‥‥。
270 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:03:47 ] WinVista/C++でopenglモデル管理クラスDLLを作って、 その中でglGenLists(a)を呼び出すと常に0が返ってきて しかもプログラムが落ちるという現象が起こってるんですが、 DLLだとopengl32.dllのスタティック領域にアクセスできないとかなんでしょうか?
271 名前:270 mailto:sage [2009/08/14(金) 11:27:57 ] 補足として。ソースはこんな感じです。全部だと長いので要所のみ class APIENTRY model { private: GLuint id; public: model() { id = glGenLists(1); //常時0 //wglコンテキストを呼んでいる場合エラー落ちする } ~model() { glDeleteLists(id,1); } void render() { glCallList(id); //描画されず } void modeling(...){...} };
272 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:15:46 ] glGetErrorの戻り値は調べた?
273 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:29:03 ] >>271 全然要所になってないぞ。どこでそのクラスをインスタンス化しているかが重要。 まさかMakeCurrentもせずにやってるとか言わないよな?
274 名前:270 mailto:sage [2009/08/14(金) 12:52:34 ] ためしにクラスを用いず int main() { using namespace std; GLuint hoge = glGenLists(1); cout << (unsigned int)hoge << endl; cout << glGetError() << endl; }; としたところ、hoge=0、エラー=1282でした。 Vistaのopengl32.dllが悪いんでしょうか。。。 >>272 エラーを調べたところなぜかGL_INVALID_OPERATION(1282)が返ってきました・・・。 >>273 Listを使わず直接描画させた場合は正しく描画できましたので、 デバイスコンテキスト/ピクセルフォーマット設定/レンダリングコンテキスト/コンテキスト関連付け等は とりあえずあってると思います。
275 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:55:51 ] >>274 全然分かってないな。コンテキストが無いとdlistは作れない。
276 名前:270 mailto:sage [2009/08/14(金) 13:00:51 ] >>275 解決しました! コンテキストのある間しかglにアクセスできないんですね・・・。 ありがとうございます!
277 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:09:34 ] >コンテキストのある間しかglにアクセスできない 当たり前だー! って感じなんだけど、初心者的には結構罠だったりするね そしていまだに、たまにやらかす俺様もダメぽorz
278 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 17:45:25 ] OpenGL ESでシェーダプログラムを組んでたんですが、 ベクトル型変数への加算をfor文で行ってたら、 シェーダプログラムが落ちちゃうんですが 仕様なんでしょうか? 以下のエラーメッセージが表示されます。 Expression: ("Buffer too small", 0) ループの回数を減らすと落ちないんですが・・・
279 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 18:50:02 ] エラーの時にエラーメッセージが出てプログラムが停止するのは仕様じゃね。 デバッグすればいいじゃない
280 名前:sage mailto:sage [2009/08/14(金) 19:11:40 ] >>278 ループできないハード/プロファイルでループしたら ループは展開されてその分レジスタがいるよ
281 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:36:15 ] 実行できる命令数に上限があるからじゃ?<落ちる
282 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:55:29 ] 「Expression: ("Buffer too small", 0)」でググるとシェーダーとか関係なさそうなんだけどどうなんだろね。仕様かねw
283 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 23:49:14 ] ディスプレイリストをOpenGLコンテキスト間で共有していて、 共有しているはずなのに、 テクスチャの更新を行うとき有効になっていたコンテキストによって glTexSubImage2Dが失敗するのは何故だ、と思っていたら テクスチャのクラスで、glTexSubImage2Dする前にglBindTextureするのを忘れていた のが原因だった。これのせいでどれだけ時間を無駄にしたか・・
284 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:12:05 ] 前スレ147あたりにオフスクリーンレンダリングについてまとめられていますが、 ・OpenGLの拡張が使えない古いPCでも動く(どんな環境でも動作する) ・ウィンドウが表示されていなくても使用可能 なもので、いい方法はないでしょうか。新しめのPCだったら間違いなくFBOを使っているんですが。 glReadPixelsは後者を満たせないようなので無理です。 glCopyTexImage2Dでオフスクリーンレンダリングが出来るというのはどう言う事なんでしょうか? 147 名前:デフォルトの名無しさん[sage] 投稿日:2008/11/08(土) 21:19:41 ・PFD_DRAW_TO_BITMAP ・glReadPixels ・glCopyTex[Sub]Image2D ・pbuffer拡張 ・render texture拡張 ・FBO(Frame Buffer Object)拡張 ・PBO(Pixel Buffer Object)拡張
285 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 23:26:04 ] >>284 普通glReadPixelsやCopyTexSubImage*はオフスクリーンレンダリングとは 言わないな。 FBOが理想だけど、それがサポートされていないような古いカードでもpbuffer はサポートしていることが多い。それすらサポートしてないならAUXバッファを 使うけど、そんな古いカード/ドライバだとアクセラレーションが効くかどうかも 怪しいな。 render to texture拡張はFBOが出る前はWindows上で流行ったけど他の環境では サポートれない場合が多い。 PFD_DRAW_TO_BITMAPはWindows専用、X上だとglxCreatePixmap()でOpenGLレンダリング 可能なPixmapを作成可能だが、少なくともXの場合はハードウェアレンダリングに ならない。
286 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 23:48:39 ] >>229 マウスで動かせるんだけどなー
287 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:35:09 ] >>284 突き詰めればOpenGLの初期化手段が環境に依存するし GLUTとかクロスプラットフォームのライブラリを使えば必ずウィンドウがおまけで付いてくる。 ある程度あきらめるか、複数の実装をコンパイルタイムとランタイム両方で切り替えるか、 要件満たしてない環境ではMesa使って下さいってことにするしかないよ。 >>285 > 普通glReadPixelsやCopyTexSubImage*はオフスクリーンレンダリングとは 言わないってことはないよ。バックバッファに書いてスワップせずにコピーするんだから。
288 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 03:56:59 ] コインに似ている形を作りたいのだけど 組み方がわかりません。 あとものを上下に動かすプログラムを教えてください。
289 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 04:13:15 ] まずコインを3次元スキャンして立体データを得るところから始めよう
290 名前:デフォルトの名無しさん [2009/08/17(月) 07:13:09 ] OpenGLの勉強をしたいのですが、いい入門書を教えてください。
291 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:17:30 ] >>290 pc12.2ch.net/test/read.cgi/tech/1250040767/
292 名前:284 mailto:sage [2009/08/17(月) 22:36:40 ] >>285 >>287 あまり古い環境ではあきらめる事にします。Mesaなんてのがあるのは初めて知りました。 FBOがサポートしていなかったらpbufferとかを使うことにします。 ありがとうございました。
293 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:45:44 ] FBOだけでいいよ。使えない環境を見つけるほうが難しい。
294 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:49:01 ] OpenGLのレンダリングステートを全て保存して復元する方法ってないでしょうか。 何をしたいかというと、自分のプログラムに 他の人が作ったプラグインを使って拡張できる機能を付けたいんです。 でもそうしようと思うと、glEnable/Disableや行列の設定を変えたりしたせいで、次のプラグイン の処理に影響が出ないようにする必要があります。初めはディスプレイリストを共有して やろうと思っていたんですが、コンテキストの切り替えが思ったより高コストで無理でした。 20回ぐらいで10FPS程度に落ちます。 なので、Singletonを使い1つのコンテキストを全てのプラグインで共有するようにしようと思ったんですが、 レンダリングステートを保存/復元するプログラムを作ろうにも、 レンダリングステートを設定する関数が多すぎて把握し切れません・・・。 何か良い解決策はないでしょうか。
295 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:54:02 ] プラグインを諦める
296 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:10:11 ] どうせ優先度とか表示・非表示とかアプリ側からいろいろ指定したりしたく なるので真面目にやるならコンテキストのラッパをプラグインに渡す 手を抜くならglPushAttribじゃね
297 名前:294 mailto:sage [2009/08/17(月) 23:17:55 ] 手抜きしたいのでglPushAttribを使います。 MANページでPushで検索してみたら glPushAttrib glPushClientAttrib glPushMatrix glPushName があるようですが、Nameはセレクションモード?で使うようなので使うのは上の3つだけですね。
298 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:23:25 ] プラグイン作成の手引きに、 「みんなのコンテキストです。変更した設定は元にもどしておいてください。」 って書いておけばいいんじゃね
299 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:39:53 ] ソレダ!
300 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:13:41 ] >>298 それは腐ったプラグインのデバッグやるはめになる死亡フラグだろ・・・
301 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 01:13:18 ] デバッグするのは「腐ったプラグイン」の作者じゃん
302 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:27:10 ] Listってモデルビュー行列のみなんでしょうか Listでモデルとライティングは呼べる事は確認できたんですが カメラ座標をListで登録して呼べないですかね?
303 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:47:26 ] いや、登録できるよ? glMatrixMode切り替え忘れてるんじゃない?
304 名前:302 mailto:sage [2009/08/18(火) 10:58:17 ] >>303 登録 glMatrixMode(GL_PROJECTION)→glGenLists(...)→glNewLists() →カメラ設定云々→glEndLists() 呼び出し glMatrixMode(GL_PROJECTION)→glCallList(...) のような形になるのでしょうか? あとそれで思ったのですが、もし登録時に glGenLists(...)→glNewLists()→glMatrixMode(GL_PROJECTION) →カメラ設定云々→glEndLists() とすれば、glCallList時にglMatrixMode()の切り替えが必要なかったりします…?
305 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 11:29:48 ] ディスプレイリストは関数呼び出しを纏めてるだけだから、 登録時のアトリビュートがどうこうとかは関係ないよ。 特定の行列を変更したいならディスプレイリストの中でglMatrixModeを呼び出せばいい。
306 名前:302 mailto:sage [2009/08/18(火) 11:31:16 ] >>305 ありがとうございます、おかげで解決しましたm-_-m
307 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 02:58:29 ] Windows上の開発でOpenGLで3Dゲーム作る場合何言語が必要?
308 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 03:21:42 ] 日本語
309 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 10:28:54 ] 英語も
310 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 18:43:51 ] あと、スワヒリ語もやっとくと、いざという時に便利
311 名前:デフォルトの名無しさん [2009/08/19(水) 19:14:31 ] つまんないレスしてないで、真面目に答えろよカス。お前のそういう所が嫌いだ
312 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:16:03 ] 2ちゃんでまともな答えを期待する方が間違い そもそもの質問内容からして馬鹿過ぎるし
313 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:23:08 ] ポリゴンの一部にテクスチャはるにはどうしたらいいんでしょう? マジで助けて・・・
314 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:51:10 ] どうしてそんな悪い質問の典型みたいな質問をしてくるんだ...
315 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:52:24 ] OpenGL ESについて、ご質問させてください。 プログラマブルシェーダを使って、 指定した画像のエッジ強調などの処理を行っているのですが、 画像処理の結果を画面に描画しないことは可能でしょうか。 プログラマブルシェーダは画面描画契機で動作するので、 描画無しでプログラマブルシェーダによる画像処理は 不可能と考えているのですが・・・。
316 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:22:15 ] >>315 簡単な方法としては、フレームバッファをスワップしなければ、描画結果は画面に出ないでしょう。 もっといいのは、Frame Buffer Objectを使う方法ですが。 ただ、「描画無しで」プログラマブルシェーダを動かすのは無理ですけどね。 描画しても画面に出さなければいいわけで。
317 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:26:24 ] >>314 どのへんがですか?
318 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:33:16 ] >>317 それが判らないなら君はこのまま一生掲示板で誰にも答えてもらえない人生を送るだけだから。
319 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:35:06 ] 良い質問の書き方 これこれこういことをやりたくて、こういう環境でこういうふうにやってみました。だけど、これがこうなって、こうなります。 ここを参考に、ここをこうしてみて、こうなることを期待したのですが、こういう症状がおきます。 どこかやりかたがまずいのでしょうか?
320 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:38:58 ] >>313 無理なので、ポリゴンを分割してください。 あるいはGL_DECALとかでテクスチャを貼って、不要な部分はテクスチャの アルファを0にしておけばそれらしく見えるかも。
321 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:40:12 ] >>316 さん ありがとうございます。 esCreateWindowでウィンドウを作成した上で 描画しないとプログラマブルシェーダを動かすのは無理そうすね。
322 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:49:17 ] >>318 >>319 なるほど、そういうことですか。 あんまり書き込みとかしてこなかったんで・・・すいません。 >>320 ありがとうございます。やってみます
323 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 21:58:17 ] glreadpixelsでフレームバッファの情報を取ってきて BMPファイルに出力なんてことを考えているんですが、 glreadpixelsで取ってこれるフレームバッファの情報は ウィンドウに表示されている画像っで認識合っていますか。 ウィンドウを非表示にしている場合はglreadpixelsを使っても 動作しないという認識で合っていますか。
324 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:10:13 ] リファレンス読んでから、そういう質問はしようね。
325 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:11:40 ] MathGL++、なんで俺のような日曜プログラマでも気づけるようなバグが放置されてるんだ…… GLMatrix.hの > inline T cofactorm13() const { return cofactor_maker(m2,m7,m8, m3,m4,m10, m10,m6,m11); } は > inline T cofactorm13() const { return cofactor_maker(m2,m7,m8, m3,m4,m10, m0,m6,m11); } が正しい。逆行列で妙な値を出すからおかしいと思ったらまったく。 最新版ver.はconfigureやMakefile使えって書いてあるのに付いてないし
326 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:14:53 ] 直接言えよ。お前は馬鹿か?
327 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 02:31:17 ] >>326 半島人はお帰り下さい。
328 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 04:36:45 ] >>325 そんだけ使われて無いってことかも。自作したクラスライブラリを使ってる人も多いだろうし。 あと逆行列を求めたい時って実際には正規直行だったりすること多いし フォーラムだと9も間違ってるってあるけどどうなんかね sourceforge.net/forum/message.php?msg_id=6117876
329 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 06:00:49 ] 確認した、情報thx。 9も間違ってるね。
330 名前:デフォルトの名無しさん [2009/08/21(金) 16:43:39 ] すみません教えてください。 トランプみたいな板があって裏表に違うテクスチャを張りたいのですが この場合表用、裏用の2つのポリゴンを用意しなければ行けないのでしょうか?
331 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:26:34 ] >>330 そのとおりです〜
332 名前:デフォルトの名無しさん [2009/08/24(月) 12:43:17 ] Blenderで作成した3DデータをOpenGLで表示するには どうすればいいでしゅか?
333 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 13:22:58 ] まずBlenderで作成した3Dデータのファイルフォーマットの仕様を調べます 次にその仕様に従ってデータを読み込むプログラムを書きます 最後に読み込んだデータをOpenGLで描画します
334 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 02:07:23 ] すばらしい完璧な回答だ
335 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 04:53:55 ] >>332 wavefront objにexportして、GLUTについてるsmoothっていうdemoの入力にすれば表示される 遅くてもいいからとりあえず表示したい時ならばだけど
336 名前:デフォルトの名無しさん [2009/08/25(火) 11:18:14 ] >>335 ありがd
337 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 12:21:06 ] >>333 がかわいそうです
338 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 12:40:37 ] 完璧な回答にはレスが付きにくい レスが欲しければ少し頭をひねれ
339 名前:デフォルトの名無しさん [2009/08/25(火) 21:57:30 ] >>337 いや、俺もいい回答だと思うよ。実に論理的だし何も間違ってない。
340 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 22:02:58 ] そうかね、 質問者が望んでいない形、(第三者にとって)情報としても価値ない そんな回答にも見えるがね。
341 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 22:42:40 ] 前スレで基地外が発生したことを考えれば、意地が悪くなるのも仕方ないというか。 まあ楽したいなら普通はOpenSceneGraphとかを使えと思う。
342 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 23:07:02 ] >>333 は確かに意地悪だとは思うけど、>>332 みたいな質問をする人って 実際のところ>>333 程度のことすら理解できてないんじゃないかって気もする。 なんか関数一発で表示できるとでも思ってるんじゃないかと。
343 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 23:47:29 ] だね
344 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 23:47:42 ] エスパー不要であることを暗黙に知らせるのには 「適当なローダかラッパのライブラリはありませんか」と聞くことだろうな。
345 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 07:35:42 ] >>340 質問者が望んでいないかどうか良く分かるね 情報としての価値が無いのはあなたにとっての話しでしょ、初心者には有益な情報だと思います
346 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 10:28:05 ] 質問者にとって文末が「調べる」や「書く」で終わる回答は常に望まれた回答では無い
347 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 10:32:49 ] 自分で調べるのは嫌なのか なまけものめ
348 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 13:32:10 ] blenderのデフォルトのフォーマットでっていうのが そもそも非推奨じゃなかったか? 仕様書とかもなかったような
349 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 20:08:43 ] 今日からオープンGLやるよ(´・ω・`)
350 名前:デフォルトの名無しさん [2009/08/27(木) 22:18:34 ] 【衝突判定】についておたずねします。 立体図形の中を上下左右自由に行き来できるようにしたのですが(OpenGLで)、 衝突判定がどうしてもできないで困っています。 すべての三角形のデータでメッシュを構成してあって、視点移動が起きた時に 移動の前後で三角形に衝突したどうかを調べてます。 まだ素人なので衝突しているはずがない三角形についても衝突判定をしています。 みなさん、衝突判定のために立体データはグループ分けみたいなことをされてるん でしょうか? もう三次元モデルのファイルを作り上げてしまったので、グループ分けしないで 衝突判定するには全てのメッシュについて判定を行うしかないのかと悩んでます。 じょうずなアルゴリズムをご存じのかた、どうかご指導を。 <(__)>
351 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 22:55:39 ] スレ違い
352 名前:デフォルトの名無しさん [2009/08/27(木) 23:15:32 ] >351そんなん言わんで答えてあげたら?
353 名前:デフォルトの名無しさん [2009/08/27(木) 23:18:10 ] 可哀想… >>351 って最低だな
354 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 23:27:08 ] おおざっぱな判定でよければAABBが最強
355 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 23:46:44 ] > まだ素人なので衝突しているはずがない三角形についても衝突判定をしています。 > 衝突判定がどうしてもできないで困っています。 矛盾してるな
356 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 02:10:16 ] 正しい衝突判定が、だろ 分かってるくせに
357 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 08:09:38 ] 衝突判定といっても、高速性が求められる場合もあれば、正確性が求められる場合もあるし、 迷路ゲームみたいにカメラが動くだけで物体は固定の場合もあれば、 群集やパーティクルみたいに大量の物が動きまくって判定しないといけない場合も。 どうしてますか?って聞かれれば、ケースバイケースで、うまいことやってますとしか答えられないような
358 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 06:44:44 ] 衝突判定って実は難しいって事だけまずは知っておけ。
359 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 17:31:29 ] bulletつかうとか
360 名前:デフォルトの名無しさん [2009/08/29(土) 20:24:55 ] お返事が遅れてすみません。350です。 「長渕剛にだったら喧嘩余裕で勝てるよ」って他で書いたら めちゃくちゃな反応されてたもんで。 先ずむかつくのが>>358 だな、馬鹿丸出しだし。 >>351 については木黄山強に顔射でもされるといいよ。 つーか、役に立たんな2chは・・・
361 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 20:41:55 ] 夏休みの宿題終わったのか? 2chばっかやってると後悔すっぞ
362 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 20:42:41 ] 第三者のいたずらレスだろう
363 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 20:48:06 ] 面白いと思ったんだろうか
364 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 20:48:58 ] 真剣な人間にはヒントの宝庫だけどな、このスレ
365 名前:デフォルトの名無しさん [2009/08/29(土) 20:54:29 ] 2cnなんだから、多くを求めないどこようよ。
366 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 21:20:58 ] 変なのが消えて、また過疎スレ化するのかな・・・ そういえば夏も終わりだねぇ
367 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 22:56:40 ] たしかに衝突判定は難しい。 俺も衝突判定については、何年も悩んで 試行錯誤を重ねた。 それで、ひとつの解に辿り着いた。 それは、全然難しくない、 むしろ簡単、至極基本的な方法だった。 悩んだ自分にむかつくので教えませんが。
368 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 23:29:35 ] 落ち穂拾いが少しできたし。 自分の知識の再確認をする機会にはなったかも。
369 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 04:39:22 ] >>367 是非教えてください。
370 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 13:21:51 ] glBufferDataARB glBufferData などのようにARBが後ろに付くものとそうでなものがありますが、機能的に 違いがあるのですか?
371 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:22:41 ] ほとんどはない 一部引数とか違うものもあったはずだが、覚えてないや サポートされてるOpenGLのバージョンやらなんやらによって どちらか片方しか使えない場合があるので、 可搬性を考慮するなら両対応しておきたい
372 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:28:52 ] ARBは Architecture Review Board の略で、標準でない拡張機能的な意味合いを含んでいるから、 両方あって、特に拘る必要がなければARBが無い方を使っといた方がいんでね?
373 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 15:43:38 ] 「ARB」の拡張機能は次バージョンでの採用候補的な意味合いが強いから、 ARB→無印で仕様が変わることはほとんどないね。
374 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 02:05:07 ] その拡張がサポートされているかどうか確認したうえで、ARB使った方が サポートできるグラボが増えていいと思っているが、そんな単純ではないのか? glBufferDataに対応していれば、glBufferDataARBにも対応しているはずだよね?
375 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 08:11:31 ] ARBの方が関数名長いし、きっと早いんだろうなと思って使ってた俺アホだな
376 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 08:19:58 ] サポートしたい最低のOpenGLバージョンを決めて、そのバージョンで標準化 しているものについてはARBやEXT取って使えばいいよ。でないとキリがない。 どの機能がどのバージョンでARB拡張になってどのバージョンで標準入りしたか は一度整理しておくと良いけど。
377 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 08:42:33 ] 使いたいものがあれば動くしなきゃ動かないで十分じゃね
378 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:00:41 ] ゲーム作ってるんだけど、シーンが変わったときに glTexImage2DとかglNewList/glEndListなんかを たくさん呼ぶのでそこで描画がもたつきます。 描画は止めたくないからglTexImage2Dとかだけ 描画とは別のスレッドで呼びたいんだけど、 エラーになってしまう。どうしたらいいのかな?
379 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:47:03 ] 古典的すぐるが一気に呼ばない
380 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:16:22 ] >>379 もしたとえば1フレームに一枚テクスチャを作るとか決めると、 逆に余裕があるときにロードがどんどん早く進まなくてちょっと困るなあ…… そのへんうまく調節するように書いても、 複雑さが増すわりには根本的な解決にならないし。 普通の市販のゲームはどうやっているんだろう?
381 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:19:18 ] NowLoading的な画面で予め確保すればいいんじゃないの
382 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:28:51 ] NowLoading画面が静止画ならそれでOKなんだけど、 たとえば「NowLoading」の文字が点滅してたりすると NowLoading画面の時も描画は止められないんです。 その点滅が不規則で、どうやらロードの合間に適当に描画を挟んで ごまかしてるっぽいゲームもあるけど、 もっとしっかりしたアニメーションをするNowLoading画面を出してるゲームもあって、 どうやっているのかな、と。
383 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:35:55 ] ファイルの読み込みと圧縮の展開だけ別スレッドでやって glTexImage2Dだけメインスレッドでやれば軽いんじゃない それか読み込み展開ルーチンそのものを細切れに動かせるように作るとか
384 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:49:45 ] NowLoading 画面を別スレッドにすればw 昔は割り込みでアニメさせてたりしたなー
385 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:09:38 ] >>glTexImage2Dだけメインスレッドで 手元のプログラムはまさにそれになってけど、ときどきもたつく。 glTexImage2D や glNewList を細切れに呼び出すとロードが遅くなるし、 何よりコードが煩雑になるのが嫌で…… 静止画でNowLoadingが一番シンプルだけど、ユーザにフリーズか?と思われるかもだから、 プログレスバー的な意味でも何かアニメーションしたいな シンプルで根本的な解決策はないということかな
386 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:18:43 ] >>385 プログレスバーを出すだけならFPSを一定に保つ必要は無いし簡単でしょ。 実際PCのゲームだとそういうのが多い感じ。
387 名前:sage [2009/08/31(月) 20:21:18 ] glLoadIdentity()ってglPushMatrix()+glPopMatrix()のペアと 同じって考えていいの? 座標がどうなっているのか、本当に理解しにくい。
388 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:31:00 ] >>387 だいぶちがうよ。 push/pop は変換行列の状態を保存しとくのだけど、 LoadIdentity は変換行列を単位行列にかえる。 popはpushしたときの状態に戻るのであって、いつも単位行列に戻るわけじゃないよ。
389 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:56:49 ] >>386 以前やったゲームに、ロード画面で キャラクターがCD-ROMを運ぶアニメーションをするのがあってさ。 ちゃんと一定のスピードで。そういうのがやってみたいんだ。 ロード画面ごときに、そこまで細かい演出しないゲームのほうが多いけど。
390 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:38:17 ] >388 どうもです。 glLoadIdentity()呼んだ直後でglPushMatrix() って無意味なんでつね。 やっと分かったような。
391 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:42:31 ] んー、ホントに GL の関数が遅いの?
392 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:54:41 ] >>390 無意味ってわけじゃないよ。単位行列を保存しておきたいのならLoadIdentityの次にPushMatrix使うよ。 例えばオブジェクトA, Bって順番で描画するときにAにだけ変換行列かけたい場合に LoadIdentity PushMatrix オブジェクトA描画 PopMatrix オブジェクトB描画 ってな感じに使える。
393 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:55:57 ] オブジェクトA描画の前に「変換行列をかける」を忘れていた。
394 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 22:45:30 ] >392 わかりやすいです、どうもありがとう!
395 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 06:06:44 ] >>392 > オブジェクトA描画 LoadIdentity > オブジェクトB描画 と等価だよな
396 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 13:31:39 ] >395 ありがと。 今日OpenGLのばぐ取りしてたら、以前ここで質問したことその まま忘れてて、今やっとデバッグできた。 ここに居る連中すごいね、俺が数日かけてデバッグするのを ちょっとみて「そこ[3]じゃなくて[9]だ」って指摘してたしな。
397 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 21:45:31 ] みんなきっと、似たような間違いを経験してるんだよw
398 名前:デフォルトの名無しさん [2009/09/02(水) 22:46:15 ] 質問です サイズ512*512の24bitbmpをテクスチャとして正方形のオブジェクトに貼ろうとしているのですがうまくいかず 真っ白(オブジェクトの色)になってしまいます 64*64〜256*256の画像ではうまくいきます 複数の枚数のテクスチャを読み込んで複数のオブジェクトに貼ろうとしているのですが 例えば512*512の画像と256*256の画像を二つのオブジェクトに貼ろうとした場合 最初に512*512の画像をgentextureして続けて256*256の画像を同じようにしてそれぞれ貼り付けると両方とも真っ白になります しかし順番を逆(256*256の画像をgentextureしてから512*512の画像をgentextureする)にすると前者だけうまく貼れて後者は真っ白になります サイズの制約も守っているので理由がよく分かりません 分かる方よろしくお願いします
399 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 22:54:39 ] PS3薄型と旧型の違い 旧型PS3: Linuxインストール機能内蔵でPS3をPCとして使うことができる。 PPC Linux用の無料のソフトがいっぱい動く。 また、Cellの開発ツールも無料で入手できるので自分でCellのプログラムを作って実行させることができる。 ドルビーTrueHD、DTS-HDMAはリニアPCM変換で対応。 HDD〜80G。実勢価格30000円程度 薄型PS3: Linuxインストール機能は除去された。 ブラビアリンク機能でブラビアと連動した電源のON OFFができる。 ドルビーTrueHD、DTS-HDMAのビットストリーム出力対応。 HDD120G。低騒音・発熱・消費電力。実勢価格29980円
400 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 22:54:54 ] >>398 一応、確認。 glBindTexture()したあと、 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); は指定してる? あとグラボの種類は?
401 名前:デフォルトの名無しさん [2009/09/02(水) 23:17:02 ] >>400 parameteriによる指定はしてます 対象のPCが手元に無いので詳細は今分かりませんが nVidiaの古めのグラボ(AGP接続だったはずなので)です
402 名前:デフォルトの名無しさん [2009/09/03(木) 22:32:48 ] >>400 すいません 確認してきましたが違いました GIGABYTEから出てるGeForce6600搭載のビデオカード(PCIーE接続)でした
403 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 22:34:42 ] >>400 >>401 先にCAD(blenderか何か)でモデリングしてテクスチャー貼っておいて、 それをOpenGLのほうで読み込むっていう手法をとらないの?
404 名前:デフォルトの名無しさん [2009/09/03(木) 23:45:47 ] カメラ行列からカメラのxyz角度出したいんだけど、 カメラ行列ってどうやって求めるんでしょう? 行列から角度もとめる関数は作ったものの肝心の行列がわからん。 参考サイトでもいいので教えてください。
405 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 23:57:16 ] GetDoubleとかの関数でProjectionMatrix取得すればいい。でもカメラの角度ってことはModelviewMatrixか。
406 名前:デフォルトの名無しさん [2009/09/04(金) 01:24:56 ] >>403 少し自分のやりたいこととは違ってしまうので 上記のようにテクスチャ作って貼り付けたいです なぜ512*512の画像だと読み込めないのか原因も分かりませんし・・・
407 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:28:31 ] glGetError()でチェックしてるか?
408 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 10:44:22 ] GL_MAX_TEXTURE_SIZEで問い合わせてみるかOpenGLExtensionViewerとかでサポートしてるテクスチャサイズを確認してみたら?
409 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 11:59:51 ] 画像を読み込むプログラムが間違ってんじゃないの? ソースをupしないなら、あーじゃないのこーじゃないのってナゾナゾの域を出ないような
410 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 22:05:08 ] GeForce6600でできないはずがない。 作成:glGenTextures、glBindTexture、glTexParameteri、glTexImage2D 描画:glBindTexture、glVertex*、glTexCoord*、(glDraw*)
411 名前:デフォルトの名無しさん [2009/09/04(金) 23:49:29 ] job:転職[レス削除] qb5.2ch.net/test/read.cgi/saku/1184734722/259 saku:削除整理[レス削除] qb5.2ch.net/test/read.cgi/saku/1240755818/163-164
412 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 03:12:49 ] なんとなく、どこかでメモリ確保サイズを超えて読み込んでるとか、 glPixelStorei(GL_UNPACK_ALIGNMENT, -); が間違ってるとか、そんな気がする。
413 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 07:47:30 ] 色を元に戻すのってglColorf(1.0, 1.0, 1.0, 1.0);使うしかないの? glLoadIdentity();じゃ元通りにならないんだよね。orz
414 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 08:32:09 ] glPushAttrib(GL_CURRENT_BIT)/glPopAttrib() 色だけなら現在値を記録しておいて戻したときにglColor呼び出しても良いと思うけど
415 名前:>>398 mailto:sage [2009/09/05(土) 13:08:28 ] >>409 ソースはここのプログラムのビットマップ読み込みの部分をそのまま使用しています www.t-pot.com/program/69_medianfilter/index.html CBitmapクラスを利用して読み込んで、呼び出した別クラスでは直後にtex_idでBindしてparametoriで設定しています 貼り付ける部分はこんな感じです。正方形を示す頂点vertex配列で作ったオブジェクトにテクスチャを貼り付けようとしています tex1 = SBitmap::Load(texture2); glBindTexture(GL_TEXTURE_2D, tex1); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 〜〜〜〜 glPushMatrix(); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D , tex1); glColor4fv(color); glBegin(GL_QUADS); glNormal3fv(normal[0]); for (i = 0; i < 4; i++) {glTexCoord2dv(texcoord[i]); glVertex3fv(vertex[face[0][i]] );} glEnd(); glDisable(GL_TEXTURE_2D); glPopMatrix(); 読みにくくてすいません。他に示すべきところがあれば補足します
416 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 13:27:28 ] 俺の環境ではクランプモードについても毎回指定しないとテクスチャが表示されなかったこともあった。
417 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 13:37:34 ] 現在のレンダリングコンテキストが OpenGL 2.0 と互換性があることを「ステートから 判断」するにはどうしたらよいのでしょうか? glGetString(GL_VERSION) で取得したバージョンのメジャー番号が 2 のときは互換性 があると思いますが、3 以上のときは Deprecated があるのでバージョン番号だけでは 判断できないと思うのですが。
418 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 13:39:19 ] >>415 ビットマップは8bitと24bitだけじゃない。 SOILとか使うと楽できるよ。www.lonesock.net/soil.html glTexParameteriとglTexEnvfの呼び出し方でグラボによって表示されないことがある。
419 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 14:13:37 ] >>415 Loadが返す値tex1が0では無いことはチェックしてる?
420 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 14:48:42 ] >>418-419 Loadが返す値は0になってました やはりCBitmapに問題があるんでしょうか? >>415 のソースは何か問題ありますか? 使う画像は24ビットbmpと制約をかけて使用しています
421 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 14:52:26 ] >>420 0025: int CBitmap::_CheckSize(unsigned int pict_size) 0026: { 0027: unsigned int i=2; 0028: const unsigned int TEX_SIZE = 256; 0029: unsigned int max_texture = TEX_SIZE*TEX_SIZE;
422 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 14:58:49 ] そこらのサンプルはそのまま使わない。 サンプルが完璧だと思わない。 自作する気がなかったらライブラリと公開されていて、 みんなが動作確認してるものを使った方がいい。
423 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 14:59:42 ] ライブラリとして
424 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 15:09:49 ] >>421-422 手元に環境と実際に試してるプログラムが無いので 曖昧なのですがその辺りは変更したような気がします 月曜に確認してみます もしダメでしたら再度質問します ありがとうございました
425 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 15:24:57 ] BMPくらい自分で作っちゃえば。 glTexSubImage2Dを使えば2のべき乗じゃないサイズも使えるよ。
426 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 15:52:36 ] 読み込むbmpファイルのファイル名が間違ってたりしてなw 最近プログラミングはできるけどデバッグはできない人って増えてきた気がする
427 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 21:54:04 ] デバッグができないプログラム技量なんて意味ないもんな。 極論するとプログラムの技量は、どれだけデバッグ早くより完全にできるかの技量、と言える。
428 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 21:55:06 ] なるほどぉ
429 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:29:55 ] 半分くらい同意。しかし一方で、バグを産まないプログラミングスタイルもあるからな。
430 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:26:43 ] 「どれだけ早くより完全にできるか」でいいんじゃね 最初からバグが混入しないようにするもよし、デバッグが早くなるように努力するもよし
431 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:35:49 ] どうしててもいいけど、うまくいかなかったらデバッグしろって話。 手順A->Bがうまくいかなかったら、まずAだけをテストするとかそういうレベル
432 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:40:24 ] なるほどなぁ
433 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 02:31:14 ] >最近プログラミングはできるけどデバッグはできない人って増えてきた気がする それはプログラミングできるって言って欲しくない。 プログラミングは正常に動作するまでデバッグの繰り返し。 プログラミングそのものがデバッグって考えてる人もいる。 できない人が増えてるのは、講義とか研究でプログラムを使う学生が増えたからじゃないかな。
434 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 03:26:28 ] これはしたり
435 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 03:40:19 ] 関係無い話は他でやれ
436 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 08:21:38 ] >>398-425 もopenGL無関係だったわけだけどね
437 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:37:53 ] >>414 ありがとう! 色のリセットは、やっぱりglColor(1, 1, 1, 1); がよさそうですね。
438 名前:デフォルトの名無しさん [2009/09/07(月) 03:01:50 ] テクスチャにアタッチしたFBOを使いたいのですが、どうもうまく使えません。 下記のコードで変なところがないか指摘していただけるとありがたいです。 // 初期化部 glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(1, &fbo_texture); glBindTexture(GL_TEXTURE_2D, fbo_texture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE_EXT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE_EXT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glBindTexture(GL_TEXTURE_2D, 0); glGenFramebuffersEXT(1, &fbo); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, fbo_texture, 0); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // 初期化部ここまで
439 名前:デフォルトの名無しさん [2009/09/07(月) 03:02:49 ] >>438 のつづき // テクスチャへの描画部 glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glPushAttrib(GL_VIEWPORT_BIT); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); glClearColor(1, 1, 1, 1); glClear(GL_COLOR_BUFFER_BIT); glViewport(0, 0, 256, 256); glMatrixMode(GL_PROJECTION); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); gluLookAt(0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glColor4f(0.0f, 0.0f, 0.0f, 0.0f); glBegin(GL_LINES); glVertex3f(-100.0f, -100.0f, -100.0f); glVertex3f(100.0f, 100.0f, 100.0f); glEnd(); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glMatrixMode(GL_MODELVIEW); glPopMatrix(); glMatrixMode(GL_PROJECTION); glPopMatrix(); glPopAttrib(); // ここまで
440 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 03:04:01 ] エラーくらいチェックしろよ
441 名前:デフォルトの名無しさん [2009/09/07(月) 03:06:57 ] >>439 のつづき glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, fbo_texture); glColor4f(1.0f, 1.0f, 1.0f, 0.5f); glBegin(GL_TRIANGLE_STRIP); glVertex2f(0, 0); glVertex2f(0, 1); glVertex2f(1, 0); glVertex2f(1, 1); glEnd(); glBindTexture(GL_TEXTURE_2D, 0); glDisable(GL_TEXTURE_2D); FBOテクスチャにレンダリングしたときのglClearColor(1,1,1,1)の色は ここで反映されているんですが、描いたはずの直線が表示されません。 glClearColorを赤にすれば赤の四角が描画されるので、FBO自体は使えているようなのですが・・・。
442 名前:439 mailto:sage [2009/09/07(月) 03:08:16 ] >>440 エラーチャックというとまずは glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)でしょうか。 これは大丈夫でした。
443 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 03:15:23 ] UVドコー
444 名前:439 mailto:sage [2009/09/07(月) 03:22:27 ] >>443 うぉ!!ないっ! 今すぐ確かめてみます。
445 名前:439 mailto:sage [2009/09/07(月) 03:30:11 ] 興奮して連投になってすみません…。 テクスチャ座標を指定したら正しく描画できました。 土日苦しんだ悩みが解決しました。 初歩的過ぎてすみませんでした。本当にありがとう!
446 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:42:30 ] これはこれは……
447 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:09:21 ] glTexImage2D() の最後の引数 data に NULL を与えてもテクスチャオブジェクトを 生成することができますが、glCompressedTexImage2D() の最後の引数に NULL を与 えた時も同じようにテクスチャオブジェクトを生成することはできるでしょうか?
448 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 17:52:08 ] お聞きしたいのですが、 void display(int color[][3]){ int i,j,k=0; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POINTS); for(j=0;j<250;j++){ for(i=0;i<250;i++){ glColor3d(color[k][0], color[k][1], color[k][2]); glVertex2d(i,j); k++; } } glEnd(); glFlush(); } main(){ int color[250*250][3]; … glutDisplayFunc(display(color)); … } と、同ウインドウ上にmainで指定した異なる色で点を描画したいのですが、 glutDisplayFunc(display(color))の引数が少ないといわれます。 解決策はありますか?
449 名前:448 mailto:sage [2009/09/07(月) 17:55:05 ] 連投すみません。mainは main(int argc, char *argv[]) です。
450 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 17:59:18 ] グローバル変数で渡す
451 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:29:12 ] >>448 ここはコンパイルエラーの解決方法を聞く所ではない。
452 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:44:25 ] >448 そのレベルでやってるのか >450 的確すぎる
453 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:55:02 ] ワロタ int g_color[250*250][3]; ... void display(void) { int (*color)[3] = g_color; ... } main() { ... glutDisplayFunc(display); ... } こんなのだろ
454 名前:448 mailto:sage [2009/09/08(火) 13:18:13 ] >>450 >>453 ありがとうございました >>451 失礼しました
455 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 19:40:06 ] 今フライトシムみたいなの作ってるんだけど、自然な雲を描きたい。 背景に描くんじゃなくて、機体がちゃんと後ろに回り込めるようなモノ。 ビルボードとかだと後ろに回っても同じ絵だから変だし、 ttp://homepage3.nifty.com/ysflight/aircraftsoft/ss_ysflight/t4blue.png みたいな白いカタマリはあんまりだ…… 輪郭がぼやけた雲を描ける上手い方法解説したサイトとかないかな? とりあえず固定パイプラインのみで。
456 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:10:59 ] ttp://game.watch.impress.co.jp/docs/20051207/3dwa.htm ■ “光る小技”の疑似ボリュームパーティクルと疑似光散乱 を参照
457 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 20:12:00 ] 適当にググったら grmanet.sogang.ac.kr/results_rendering.html www.gamedev.net/columns/hardcore/cloudrendering/
458 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 21:38:32 ] >>456 , 457 そのへんのページ読んでみたら何となくわかってきたかも…… いわゆるパーティクルというやつで ちいさいスプライトをたくさん描けばいいわけだな? ちょっと実装してみるよ。実用に足る速度になるかわかんないけど ありがと
459 名前:デフォルトの名無しさん [2009/09/12(土) 00:00:14 ] 質問していいですか。 平行投影と透視投影を切り替えたいのですが、一度透視投影にした後は、 平行投影に戻せなくなります。 glMatrixMode(GL_PROJECTION)して、glFrustumすると何らかのパラメータが 設定されてしまうからと思ってますが。
460 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:12:39 ] glFrustum, glOrtho する前にちゃんと glLoadIdentity してる?
461 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:30:29 ] 直前にしてます
462 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:35:45 ] glGetErrorでエラーチェックしろ 問題が再現する最小限のコードを張るなりどこかにアップロードしてリンクしろ
463 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 01:05:34 ] すみません、いま実験で取り込んでて、今晩中か明日くらいにうpします;
464 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 01:28:46 ] 意外とさくっと再現できました。 ttp://www.dotup.org/uploda/www.dotup.org131192.cpp.html pass:gl です。Enterキーを押して、平行投影と切り替えたいのですが。
465 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 01:35:04 ] モデルビュー行列にglOrthoやってるぞ。
466 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 01:43:42 ] アホすぎるだろ
467 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 02:51:16 ] ありがとう。 なるほど、glOrthoやるときはGL_PROJECTIONしてからやる必要あるのね。 glOrtho使ったことなかったから知らなかったわ;
468 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 02:54:09 ] void display(void) { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glMultMatrixd(rot); ・ ・ void resize(int w, int h) { glViewport(0, 0, width = w, height = h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(mode == 1) { gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); } else { glOrtho(-2.0, 2.0, -2.0, 2.0, 0.0, 10.0); } glMatrixMode(GL_MODELVIEW); } で解決しました。ありがとうございます。
469 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 12:32:28 ] >>467 そういう問題じゃないだろうw プロジェクション行列を設定するならGL_PROJECTIONを指定しなさい。 glFrustumもglOrthoも、プロジェクション行列を生成する命令。OK?
470 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:15:49 ] 初心者にはProjとModvの意味が分からんからな。俺もそうだった
471 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 13:38:31 ] GLの、この読み出してんだか書き込んでんだか 見た目わかりにくいライブラリがすべて悪い
472 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 15:02:11 ] 低レベルな質問ばかりだな。せめて赤本には目を通せよ
473 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 17:26:33 ] 俺はシャドウマッピングを初めて試したときに、OpenGLの行列まわりの理解が曖昧だったのがしっかりしたな。
474 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 17:29:54 ] 独り言はチラシの裏にでも書いといてね。
475 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:16:07 ] >>472 >せめて赤本には 皆さんって赤本は必携なの? ネット上に赤本の初版が公開されてますが、あれではだめ? もすこし手軽な入門書を紹介していただけませんか。
476 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:22:51 ] OpenGLをやりたい と 手軽に覚えたい は 相反する願望です。 てか赤本も腰据えて読めば手軽に感じるよ。
477 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:24:41 ] 「OpenGLの神髄」でさらりと全体を概観してから赤本に進むのがいいんじゃないの。 これからはじめるなら。
478 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:31:51 ] >>475 OpenGLの概要を理解するのに赤本が一番手っ取り早い。 読むにあたって敷居が高くもないと思うが。ウェブに置いてあるのは OpenGL 1.1対応版だが、それで基本は押さえられるからいいよ。 第5章まで読んで、あとは必要に応じてで十分。 シェーダー関連は赤本だけじゃ足りないが。
479 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:35:06 ] 必携だとは言わないけど赤本の内容ぐらいは理解しているべき これから始めるならって事なら、固定機能パイプライン弄るだけの古いOpenGLの使い方覚えてもしょうがないと思うなあ
480 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 22:01:35 ] ここに来る初心者の大半が固定パイプラインを使っているという事実
481 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 22:24:16 ] 固定機能を排除するにしても、固定機能の代替となるようもう一段ミドルウェアをかまさないとつらいからな
482 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 23:35:21 ] 正直固定機能いらない・・・ 一度3.0前方互換使うとあんなにデバッグしにくい代物使う気無くすよ。
483 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 00:11:35 ] シェーダーで固定機能のエミュレーターを書くのが辛すぎるのがなぁ 分岐の解決がコンパイル時かシェーダー内かって極端なんだよ drawした時点で条件分岐を解決して命令をフラットに並べるというようなものが欲しい
484 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 02:17:22 ] visual studioを使ってopenGLを使いたいのですが、 どこでダウンロードできるのでしょうか? ググってたら1日が終わってしまいした・・・
485 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 02:35:16 ] windows sdk
486 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 08:48:12 ] 475ですだ。 みんなありがとう、赤本ってエロ本と同じくらい大切なんでつね! でも、みんなレベルが高すぎて結局シェイダーの話とか パイプラインの話とかになってしまうんでつね・・・・
487 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 12:21:55 ] このスレでいいのかわからないけど、質問です。 四元数でつくった関節の可動域を制限したい場合、どんな計算をしたらよいでしょう?
488 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 12:25:16 ] >>487 3Dグラフィックスプログラミング pc12.2ch.net/test/read.cgi/tech/1155153009/l50 3Dアルゴリズム全般 pc12.2ch.net/test/read.cgi/tech/1164171086/l50
489 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 19:53:23 ] だれか赤本じゃなくてスーパーバイブル(水色)読んだ人っていませんか。 www.amazon.co.jp/OpenGL-SuperBible-Comprehensive-Tutorial-Reference/dp/0321498828/ref=sr_1_1?ie=UTF8&s=english-books&qid=1253098287&sr=8-1 かなり評価高いみたいなんだけど、日本語はないんだよね。
490 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 21:21:10 ] 人柱頼んだ
491 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 22:22:58 ] 赤本って2chでは人気あるけど、アマゾンでは(米国でも) 最低の評価。
492 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 22:41:15 ] 最低じゃないじゃん。amazon.co.jpでの評価5じゃん。 amazon.comでは最近のは評価が低いな。昔の(1.4とか)は評価高いが。
493 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 23:11:12 ] OpenGL3.0対応を謳ってはいるがそれについての内容が微妙ってのが原因だったような。 前調べたときの印象だから今は知らんが。
494 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 13:37:26 ] >>489 のOpenGLスーパーバイブルは何か、ここでは誰も読んでないんでつか・・・ そーでつかぁ・・・
495 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 13:52:40 ] >>493 著者がOpenGL3.xのdeprecation modelに批判的だからな。 今年のSIGGRAPHで見かけたから聞いてみたらそんなこと言ってた。 まあ基本を押さえれば後はクイックリファレンス見る程度で十分だとは思う。
496 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 21:22:29 ] 本屋で見たけど窓環境依存の説明が多くて、こりゃ要らんわと思った 窓以外の環境で使ってる人にはお勧めできない
497 名前:デフォルトの名無しさん [2009/09/19(土) 02:20:09 ] Linux 用のも大きい本屋で見たことアルよ. あと Android 本とかが OpenGL ES を使って携帯で 3D やってる: pragprog.com/titles/eband/hello-android
498 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 10:31:47 ] ESならそれ用の本が別にあるだろ
499 名前:デフォルトの名無しさん [2009/09/19(土) 10:36:03 ] >>498 > ESならそれ用の本が別にあるだろ たとえば?
500 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 10:45:34 ] ttp://www.amazon.co.jp/OpenGL-ES-2-0-Programming-Guide/dp/0321502795 とか
501 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 13:47:29 ] >>500 それ、プレステ開発用のOpenGLバージョン1.1じゃなくて、2.0の説明 なんだよな。 赤本に文句付けるとすれば、やっぱどこ? 俺はESの説明箇所が少な杉だってことだけど、2ch代表して苦情 出しとこか。
502 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 13:53:41 ] こいつ恥ずかしすぎる
503 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:29:51 ] >>500 は阿呆の2ch代表
504 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:55:22 ] 間違えた。 >>501 は阿呆の2ch代表 500ごめん
505 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:44:03 ] Quadro FX 1300とQuadro FX 370だとどっちが高性能か教えてくれんか?
506 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 11:53:22 ] スレ違い
507 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 23:16:46 ] Mac でカラー指標モード動かすこと可能?
508 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 20:29:03 ] >>502-504 やめとけ、京大院生だぞ、相手は。お前等にゃちと倒せんよw
509 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 20:41:40 ] なんというか・・・本気だろうが冗談だろうが、 相当に頭の悪いというか、よくもまあそんな幼稚な発言を平気で出来るなあ・・・。 こんな馬鹿なレスされたら、逆に笑えないな・・・。
510 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 21:21:46 ] ここ、そういうの多いから気にしてたらダメよ
511 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 09:27:34 ] まっとうな京大院生なら、苦情出す前に自分で本書きはじめるだろ。
512 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 11:16:42 ] glVertexPointerにはvoid*型で渡すようになってますが APIではどうやって渡されるポインタをheadとする列の終端を探知してるんですかね? 座標の数、それを表す型(のサイズ)、ストライドだけじゃ もう一つそのポインタで表現されている列に含まれる頂点の数ってのが判ってないと 終端がわからずに範囲外までいっちゃうと思うんですが
513 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 11:32:08 ] 別に終端を探知したりしない glDrawArrayやglDrawElementsに渡したインデックスが範囲外だったら、素直に範囲外まで行って落ちちゃう
514 名前:512 mailto:sage [2009/09/23(水) 16:28:09 ] >>513 なるほど、探知しないんですね かなり勘違いしてたようです 解答ありがとうございました
515 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 17:05:55 ] KMCってまだあんのか?
516 名前:デフォルトの名無しさん [2009/09/24(木) 16:13:45 ] すご〜く初歩的な質問なのですが glutMainLoop()以外のOpenGLの関数をmain関数以外で呼び出したら 再描画ができなくなるとか、そういったものはあるのでしょうか?
517 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 16:51:29 ] 特にないはず ただし glutCreateWindow を呼ぶより前には呼べない (まだウィンドウがないから) あと、全然別の場所で呼んだ OpenGL の関数が、画面の描画時に影響を与えてしまうことはありうる 例えば、どこかで glColorMask を設定して元に戻すのを忘れてたら、glClear を呼んでも画面がクリアされない、とか
518 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 16:53:42 ] glutMainLoop()はglutライブラリの関数であってopenGLの関数ではない glutInit() glutCreateWindow()あたりはそう気軽に呼ばないほうがいいかもね openGLの関数ならmain()以外で何を呼ぼうがおおむね問題なし (glBegin()だけを呼んでglEnd()を呼ばないのはダメとか例外はある)
519 名前:デフォルトの名無しさん [2009/09/24(木) 19:02:44 ] C++なのですが コールバック関数で指定する関数は静的じゃないとだめなようなのですが クラスの非静的なメンバ関数を指定する手段なんてないですよね・・・?
520 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 19:04:04 ] インスタンスが無いからだろ
521 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 20:13:51 ] freeglut glutGetWindowData というお約束
522 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 20:44:40 ] >>519 大抵コールバック関数はユーザが任意でvoid*を渡せるだろ。 それにクラスのインスタンスのポインタを渡して使えばいい。
523 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 11:41:16 ] GtkGLextmmは開発が止まっているのかな? Linuxでは何を使うのがメジャーなのか教えていただけませんか?
524 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 14:36:34 ] メジャーかは知らないがOpenTKとかもあるね。
525 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:19:16 ] 最近OpenGL3.0以降の勉強をしようと思いまして、シェーダーを学び始めました。そこで立方体(-1, -1, -1 から 1, 1, 1)を描画し、y座標の高さを変数とした矩形関数に応じて色を変化させる(要するに縞々)ようにシェーダーを書きました。 バーテックスシェーダーを #version 130 in vec3 position; uniform mat4 projectionMatrix; uniform mat4 modelviewMatrix; out float y; void main(void) { y = position.y; gl_Position = projectionMatrix * modelviewMatrix * vec4(position, 1.0); } フラグメントシェーダーを #version 130 out vec4 out_FragColor; in float y; const vec3 c1 = vec3(1.0, 1.0, 1.0); const vec3 c2 = vec3(0.25, 0.25, 0.25); void main(void) { float a = step(0.5, fract(y)); out_FragColor = vec4(mix(c2, c1, a), 1.0); } このように書いたところ、y = 1の面が正しく描画されず、FSで指定したc1とc2の色それぞれを含んだ砂嵐状態になってしまいます。他の5面は正しく描画されています。 kissho.xii.jp/1/src/1jyou92248.png 面の描画順を変えてみたりしてもy = 1の面が毎回おかしくなっています。GLSLはまだ扱い始めたばかりで、今回は自分だけでは間違いを発見することができませんでした。 何かおかしな点、助言などがありましたらよろしくお願いいたします。
526 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:00:39 ] varying float y; void main(void) { y = gl_Vertex.y; gl_Position = ftransform(); } varying float y; const vec3 c1 = vec3(1.0, 1.0, 1.0); const vec3 c2 = vec3(0.25, 0.25, 0.25); void main(void) { float a = step(0.5, fract(y)); gl_FragColor = vec4(mix(c2, c1, a), 1.0); } で良いか?
527 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:08:27 ] >>526 OpenGL3.0より前だとそういうことになりますね。
528 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:45:22 ] varing変数の誤差じゃね。1.0と0.9999は違う色にしてるわけだから 解決策はよくわかんない。うまく丸めればいいんだろうけど、とりあえず float a = step(0.5, fract(y-0.00001)); とか?
529 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:49:16 ] >>528 おっしゃる通りvarying(in)の誤差だったようです。-0.00001のオフセットを加えたら直りました。 本当にありがとうございました。
530 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:07:02 ] >>524 OpenTKですか、ググってみます 有り難うございます
531 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 05:38:16 ] 浮動小数点の演算誤差の部分もあろうし、 あとは丸め込みの規則がボードによってバラバラなんだよね。 偶数丸めや四捨五入で統一されているわけではない。 固定機能の色の計算では苦しませてもらいました。
532 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 15:21:07 ] スレ違いかもしれないけど、 同じテクスチャ(模様入り)を違和感なく繋げてマッピングする方法ってあります? 色の違いで境界線が見えるようなことが無いようにしたいのですが。
533 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 19:46:08 ] シームレス photoshopでぐぐるのだ
534 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 22:26:41 ] ついでにここも見とくといいことあるかもね ttp://blogs.msdn.com/ito/archive/2008/03/21/photo-to-texture.aspx
535 名前:532 mailto:sage [2009/09/30(水) 15:37:15 ] >>533 ,534 教えていただいてありがとう。 だけどソフトを使わずにプログラムで出来ないものでしょうか。
536 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 17:45:23 ] [左右反転][元のテクスチャ] [左右上下反転][上下反転] パターンがあるテクスチャなら こうすれば目立たなくなるんじゃない? レンダーステート少々いじるだけで出来そうだし コストもゼロだ
537 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 18:31:52 ] glTexParameteri() で GL_TEXTURE_WRAP_S と GL_TEXTURE_WRAP_T に GL_MIRRORED_REPEAT を指定するというのはどうでしょうか. 幾何学的には必ずしも連続しませんけど,色はつながります. ttp://www.opengl.org/sdk/docs/man/xhtml/glTexParameter.xml
538 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 19:47:45 ] コストをかけていいならワンのタイル(絨毯)とかか ttp://www.t-pot.com/program/120_Wang/index.html これで繰り返し可能な大きなテクスチャを事前に作っておくという方法もあるかも
539 名前:デフォルトの名無しさん [2009/09/30(水) 20:16:52 ] >>522 ググってたらこんな方法を見つけたのですが ttp://paulsolt.com/2009/07/openglglut-classes-oop-and-problems/ これよりスマートな方法はないんでしょうかね
540 名前:532&535 mailto:sage [2009/09/30(水) 20:54:03 ] >>536 ,537,538 いろいろな方法ありがとう。試してみます。
541 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 21:00:11 ] >>539 C++ デレゲート(もしくはデリゲート)でぐぐってみろ。お前さんの探してる答えが見つかる。
542 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 11:33:56 ] すみません、教えていただきたい事があるのですが、 GLSLを使用すれば、BlenderやLightWaveで作成した3Dモデルを プログラム上で制御できるようになりますか?
543 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 11:44:31 ] いいえ GLSLはモデルを制御しません
544 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 13:26:49 ] >>543 ありがとうございます。 作った3DグラフィックをOpenGLのソースに落とせるソフト、 または、3Dソフトで作成したものをOpenGLのソースに落とす為に 橋渡しをするツール等あれば教えていただきたいです。
545 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 15:34:02 ] openGLを用いたソースは「プログラム」です。3Dソフトで作成したものは「データ」です データとプログラムを橋渡しをするのはプログラマーやシステムエンジニアの仕事です お金を沢山用意してご相談ください
546 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 16:18:56 ] >>545 自動で変換できるようなものは無いのですね。 ありがとうございました。
547 名前:デフォルトの名無しさん [2009/10/02(金) 20:49:05 ] 初歩的なことかもしれませんが質問です。 複数のビューポートを設定した時にそれぞれの背景色を変えるにはどうすればいいですか?
548 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 21:35:29 ] glViewport(x, y, w, h); glScissor(x, y, w, h); glEnable(GL_SCISSOR_TEST); glClearColor(r, g, b, a); glClear(GL_COLOR_BUFFER_BIT); glDisable(GL_SCISSOR_TEST);
549 名前:デフォルトの名無しさん [2009/10/02(金) 22:02:08 ] >>548 ありがとうございます! おかげさまで無事に解決できました。 Scissorってのを使えば良かったんですね。
550 名前:デフォルトの名無しさん [2009/10/02(金) 22:49:36 ] >>545 でもモデルビュアーでOpenGLコマンドでセーブできるオプションがあってもいいよね。 あってどーすんだという気もするが、多分存在しない。
551 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 22:56:54 ] 名前は忘れたが、OpenGLのdllをすり替えて頂点データを抽出するソフトならあった気がする
552 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 23:03:54 ] >>551 それは>>544 がやりたいことと全然関係ない気がする
553 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 23:39:24 ] >>550 Deep Exploration なら、各種3Dモデルフォーマットの他に C言語ソースで保存することもできるよ。 表示するソースまで吐いてくれた気もするけど、ちょっと忘れた。
554 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 23:40:48 ] >>553 書き忘れた。えっと確かOpenGLで表示してくれるソースだった気がする。 今度気が向いたら確認してみるー。
555 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 10:13:45 ] 名前の左、でした
556 名前:553 [2009/10/06(火) 12:22:44 ] >>550 確認しますた。DeepExplorationはOpenGLで表示する.cpp吐いてくれます。 というか、モデルを表示するDLを返してくれる関数を出力してくれます。
557 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 19:26:15 ] >>556 オプションで、WinMainを含んだ完全なWindowsアプリケーションのソースも吐けるよ。 あえてGLUTは使っていないようで、ちょっと読みにくいソースだけど。
558 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 23:22:22 ] まじか。これは始めて知った。 世の中広いな
559 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 23:29:51 ] そら間寛平でも2年以上かかるぐらいだからな
560 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 23:31:31 ] そんなの使う人いるのかな。 頂点データじゃなくて、頂点を計算で求めてくれるなら面白いけど。
561 名前:デフォルトの名無しさん [2009/10/09(金) 18:56:09 ] Mac OS Xなのですが GLUT_KEY_UPやGLUT_KEY_DOWNなどは Apple Keyboardではどのキーが割り当てられているのでしょうか
562 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 19:34:51 ] それkeyじゃないだろ。
563 名前:デフォルトの名無しさん [2009/10/10(土) 09:55:53 ] 初心者です。 オブジェクトの回転についてお聞きしたいことがあります。 glRotateを使用してオブジェクトを回転させたいのですが、オブジェクトの ローカル座標系を基準として回転させるには具体的に何をすれば良いのでし ょうか? 凄く簡単な様ですが、妙に嵌っています。一本の棒をピッチ方向に45度回転 させた後に、その棒のローカル座標系を基準としてロール方向に45度回転さ せるというものなのですが、グローバル(ワールド)座標系で回転している 様です。 参考となりますURLでも差し支え御座いませんので、どなたかお教えください。
564 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 10:28:44 ] >>563 OpenGLにはワールド座標とローカル座標の区別はないけど、それはこの際ややこしくなるから置いておくとして。 多分今は回転を glRotate(45, 1, 0, 0);//ピッチ glRotate(45, 0, 0, 1);//ロール DrawObject//オブジェクトの描画 ってやってるんだと思うけど、このピッチ回転ロール回転の順序を逆にしてみたらどう? OpenGLは回転とか移動とかした際に、オブジェクトが持つ座標も一緒に変換を受けていると考えたらわかりやすいよ。
565 名前:デフォルトの名無しさん [2009/10/10(土) 11:13:36 ] >>564 早速の返答、有難う御座います。 多分、そのややこしくなる所が“肝”だと思っています。 アドバイス頂きましたピッチ回転とロール回転の順序を逆にしてしまい ますと、向きが修正前と変わってしまい、都合が悪いです。 挙動を見ますと最後に記述したglRotateの成分方向のみについては、オ ブジェクトの座標系通りに回転するのですが、その前に記述した別の成 分方向についてはオブジェクトの座標系通りには回転してくれません。 これから、glMultMatrixを使用してトライしてみます。
566 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 11:58:20 ] >>565 出来れば目的の回転をかけた前後の、立体的形状がわかる三面図的なものがあれば、解決が早くなるかもしれない。 あとその回転かけてる部分のソースとかね。
567 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 11:59:07 ] glMultMatrixとか使わなくてもできると思うが説明がめんどくさい。 基本的には下のような流れだ。 glTlanslate(ホニャ〜// 移動が最初 glRotate(ホニャ〜 // 回転は描画前 // 以下描画 glBegin(ホニャ〜 glVertex(ホニャ〜 : glEnd(ホニャ〜 実際の変換と記述が逆になるので、動きを追う時は描画部分→回転→移動 と下から上に考えた方が分り易い。(ここでの回転をワールド座標系位置での回転と考える)
568 名前:デフォルトの名無しさん [2009/10/10(土) 12:48:46 ] 「ややこしくなる所」が肝じゃない事だけは確かだな
569 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 13:19:55 ] >>563 よく分からないがローカル座標系で回転するクォータニオンを合成する とかかな?それをglRotateに与えてやればいい気がする
570 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 20:41:38 ] gluLookAtで指定する引数からクォータニオンを計算できませんか? 仮にカメラの位置をE、物体の見る位置をV、カメラの上方向ベクトルをUとすると VEで出来るベクトルとUの外積で回転軸が求まり (0,0,1)とVEで出来るベクトルの内積から回転角度が求まると思ったのですが 計算がどうも合いません 質問する板が違いましたら誘導をお願い致します。
571 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 20:47:31 ] そもそも何をしたいのかがよくわからん
572 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:05:08 ] >>571 OpenGLを使ったデータビューワーを作っているのですが、 同時にOpenGLを使わない時の表示も行ってます。 その時にクォータニオンが必要でクォータニオンからgluLookAtは 出来るのですが、gluLookAtの引数が分かっている時のクォータニオンも 必要なのです。(出来ると思うのですがどうも上手く行きません)
573 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:21:32 ] 何の角度を求めたいのかよくわからんが、オイラー角とクォータニオンの相互変換なら それようのライブラリがどっかに転がってるから、素直にそれ使っときなさい。
574 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:45:10 ] OpenGL使わない用のコードがあってちゃんと動いてるんなら、 そっちで計算した行列をglLoadMatrixで設定すれば済む話なんじゃない? gluLookAt使わずに
575 名前:デフォルトの名無しさん [2009/10/11(日) 16:52:41 ] 初心者です。 回転に関しますアドバイス、有難う御座います。 未だに回転で嵌っております。「ややこしくなる所」が肝じゃないとの回答 も頂きましたが、ローカル座標系とグローバル座標系をきちんと意識してい ないと駄目なようです。 傾いた直交座標系を基準にオブジェクトを回すだけなのですが、簡単では無 い様です。glMultMatrix()の適用についても触れられておりました。 日本語訳(機械翻訳) opengl.jp/oglfaq/transformations.htm 9.162 オブジェクトを揺らしたり、ピッチ&ロール変換するには? 原文 www.opengl.org/resources/faq/technical/transformations.htm#tran0162 9.162 How can I transform an object with a given yaw, pitch, and roll?
576 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 17:50:33 ] お尋ねしますが、 テクスチャマッピングのときにjpg画像ってあまり使われないのですか? 違う形式に変換してる例ばかりなのですが、jpgでやりたい場合はどうすれば良いのでしょうか
577 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 17:57:47 ] どうするもなにもメモリに読み込んじゃえば、あとは同じでしょ。 メモリに読み込む方法は、jpgのフォーマットに合わせて手作りするか、 どっかに転がってるライブラリでも使っときなさい。
578 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:04:18 ] 展開して読み込むから圧縮しても使用メモリは変わらないよね。
579 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 20:02:16 ] >>575 やっぱりどのような回転を行いたいのかを図示なりしてくれないとアドバイスもしにくいよ。 それよりもクォータニオン使えば、思い通りの回転を加えられると思うんだけどなぁ。 >>576 OpenGLではjpgだろうが、pngだろうがプログラムで読みこんで配列に格納したあとに転送するからOpenGLで直接圧縮ファイルを扱うことはできないよ。
580 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 20:14:43 ] 寺西さんとこにjpg使うサンプルあるからそれ参考にすればいい
581 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 22:14:40 ] OpenGLで日本語を描画する高速なライブラリないか? ビットマップでいいんだが自作するしかないか・・・
582 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 22:19:20 ] そういや画像フォーマットスレ無いのかなあ。
583 名前:デフォルトの名無しさん [2009/10/11(日) 23:38:17 ] >>579 申し訳御座いませんでした。 イメージを図示しました。 imepita.jp/20091011/843830 3本の矢印からなるオブジェクトがあるとしまして、直前の姿勢の1つの軸を 基準に回転させ、回転終了後に再度別の軸を基準に回転させていくというも のです。 なお、回転軸の選択と回転角度は別途GUIより与える形です。 アドバイスをお願いいたします。
584 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:06:29 ] >>583 RGBの順番にXYZと解釈させてもらうと、少なくともその図の回転だけなら、 Glu.LookAt(1, 2, 3, 0, 0, 0, 0, 0, 1); GL.Rotate(-45, 0, 1, 0); GL.Rotate(-45, 1, 0, 0); GL.Begin(BeginMode.Lines);//正六角形描画。 { GL.Color3(1.0f, 0.0f, 0.0f); GL.Vertex3(0.0, 0.0, 0.0); GL.Vertex3(1.0, 0.0, 0.0); GL.Color3(0.0f, 1.0f, 0.0f); GL.Vertex3(0.0, 0.0, 0.0); GL.Vertex3(0.0, 1.0, 0.0); GL.Color3(0.0f, 0.0f, 1.0f); GL.Vertex3(0.0, 0.0, 0.0); GL.Vertex3(0.0, 0.0, 1.0); } GL.End(); これでいけたけど。
585 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:07:08 ] あぁ正六角形描画ってとこは無視しといてくれ。
586 名前:デフォルトの名無しさん [2009/10/12(月) 00:30:45 ] >>584 早速の御返答、有難う御座います。 提示頂きましたコードをC++用に直しまして確認しましたところ、確かに 希望します挙動になっております。 明日、現状のプログラムに直接glRotateを組み込んで再確認してみます。 夜遅くに対応して頂き、誠に有難う御座いました。
587 名前:sage [2009/10/12(月) 09:20:23 ] >>581 ttp://i-saint.skr.jp/pg/#gl_kanji (要SDL。ソース公開) ttp://zzt-kuruma.hp.infoseek.co.jp/opengl/main.htm (glm32.lzhってやつでフォントが使える)
588 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 10:49:33 ] >>587 ありがとう ちょうどSDL使ってるしgl_kanjiみてみようかな
589 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 10:51:06 ] 最近のwx_widgetだとツールがコンパイルできないかもしれない
590 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 14:15:21 ] >>577 ,579,580 情報ありがとうございます。
591 名前:デフォルトの名無しさん [2009/10/13(火) 19:34:10 ] ウインドウ上で マウスを右クリックしたまま左右に動かすことで 視点のズームインとズームアウトさせたいのだが 移動量をどう与えると良いのだろうか
592 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:56:15 ] ズームイン/ズームアウトで、視点は移動しないだろ
593 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 04:13:28 ] ドリーのことだと解釈してやれよ
594 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 07:45:00 ] 糞の役にも立たない屑レスをするが、 右ドラッグは回転、左右ドラッグでズームインアウトするようにしてくれ
595 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 10:48:35 ] あー、便乗質問。 >>594 何か根拠でも? それと、左ドラッグでは何を想定している?
596 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 11:18:31 ] 某3DCADの初期設定は左ドラッグで回転、右ドラッグで移動、 左右ドラッグでドラッグ開始点基準でズームインアウト 微妙なコントロールで使いたい回転が左ドラッグなので使いやすいよ
597 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:15:57 ] 今更ながら GLSLおもすれー
598 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 01:37:42 ] 質問させて下さい。 下記のような頂点バッファAとBがあるとします。 A: a1, a2, a3, ..., a10000 B: b1, b2, b3, ..., ..., b20000 この状態からデータのコピーなしで、 A: a1, a1, a2, a2, a3, a3, ..., a10000, a10000 B: b1, b2, b3, b4, b5, b6, ..., b19999, b20000 という具合にattributeを生成したいのですが、 どのようにすればよいのでしょうか?
599 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 01:45:28 ] ttp://www.opengl.org/registry/specs/ARB/instanced_arrays.txt
600 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 02:10:09 ] >>599 まさにそれです! ARBなのが残念です・・・。 別の方法を検討してみます。 ありがとうございました!
601 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:24:12 ] テクスチャ作成をクラス化して glGenTextures(1, &m_texture ); glBindTexture(GL_TEXTURE_2D, m_texture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width , height , 0, GL_RGBA, GL_UNSIGNED_BYTE, data ); で作成しているのですが m_textureの戻り値が常に0になり、 複数のテクスチャを読み込んでも、最後に読み込んだデータしか適応されなくなるのです。 いちおう、データが読み込まれて画像表示もできてるので 生成エラーではないようなのですが
602 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:27:25 ] >m_textureの戻り値 って何?意味がわからん。
603 名前:わかんないんです(><) ◆WAkan9Ey1g mailto:わかんないんです(><) [2009/10/21(水) 22:28:34 ] わかんないんです(><)
604 名前:601 mailto:sage [2009/10/21(水) 22:38:04 ] >>602 glGenTextures(1, &m_texture ); 実行後の &m_texture が常に0なんです。 テクスチャ削除とかしていません。 普通、1,2,3 と利用されてない数値採番するはずと思うのですが
605 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:43:44 ] コンテキスト生成前に呼んでるに一票
606 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:47:43 ] 現在ソースがないので確認できませんが なんやかんや初期化した後の glutMainLoopの直前でコールしてるつもりです。
607 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:29:02 ] GL_TEXTURE_2D使用する前にやることあるだろw
608 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:14:49 ] >>604 GenTexture実行後の「m_texture」が0なんだよね?それとも「&m_texture」が0?
609 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:34:56 ] 環境とglGetErrorの結果も貼らずに質問とな
610 名前:601 mailto:sage [2009/10/22(木) 12:32:56 ] 環境はXP+VC2003です。 デバッグ時のブレーク部分がずれてたので いろいろ試してテキストのコード形式をshift_jisに変更した所 行けるようになりました。 ソースをmacのxcodeで生成したのが悪かったんでしょうかね 訳わからん ありがとうございました
611 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:34:09 ] >>608 m_textureが0です >>609 XP+VC2003 glGetErrorは、0を返してました。
612 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:19:21 ] R600_SCRATCH_REG_OFFSETで引っかかったけど何で未だにこんないやがらせするんだろ
613 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 03:54:49 ] X11上でOpenGLレンダリングしたいんですがなぜかMacOSX10.6XcodeにはGLXがありません… GTK+等を使わず、なるだけlow levelで実装したいのですが、可能でしょうか?
614 名前:わかんないんです(><) ◆WAkan9Ey1g mailto:わかんないんです(><) [2009/10/24(土) 10:31:40 ] わかんないんです(><)
615 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 10:47:12 ] あれ、俺のMac(10.6.1)にはGLXはいってるけどなぁ。 それか、Macだったら素直にCocoaでOpenGL.Framework使えば?
616 名前:613 mailto:sage [2009/10/24(土) 11:20:14 ] >>615 10.6.1ですがヘッダやフレームワークではGLXが見つからないです… どこか別のパッケージに入ってるんでしょうか… あとOpenGLでウィンドウ描写する処理をフレームワーク化したいんですが、 何かCocoa+OpenGL.framworkでxib, plist等をリソースに追加してパッケージ化しても利用できないようで…
617 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:28:10 ] ヘッダーファイルもないの? /Developer/SDKs/MacOSX10.6.sdk/usr/X11/include/GL/glx.h とか /usr/X11/include/GL/glx.h とか そもそもX自体がインストールされてないとか? でも最初から入ってるはずだしなぁ
618 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:33:47 ] つか GLX 遅いよ
619 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:10:46 ] でっていう
620 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 12:46:36 ] 3.2のリファレンスページなかなか完成しないな。 現状OpenGLは3.2でDirectX10.0に追いついて、コンピューティングに関してはOpenCLがあるからDirectX10.5くらいな感じだな。 今年はなかなか勢いがあったからそのまま維持してもらいたいものだが。
621 名前:デフォルトの名無しさん [2009/11/04(水) 19:23:44 ] 法線ベクトルの値をパラメータにして 3次元空間上に平面(凹凸もないただの平面)を描画したいのですが どのようにコーディングすればよいのでしょうか?
622 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 19:32:12 ] 法線ベクトルだけじゃ平面は定まらないから無理でしょう 平面の式 ax+by+cz+d=0 の a, b, c までしか埋まらない
623 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:21:09 ] まぁ平面のバイアスというか、ずれは法線ベクトルからだけじゃ判断できないけど原点とおる平面なら描けるね。
624 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 22:03:58 ] 無限平面描くのは無理じゃね?
625 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 23:55:44 ] >>622-623 4つめのパラメータ(原点からの距離?)が必要なわけなのでしょうか? だとすればどうコーディングすればよいのでしょうか どこかに参考になるコードが載っていればと思って探してはいるのですが
626 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 00:02:32 ] >>625 何がしたいかによる。 4つめのパラメータが無ければ、平面の向きしか定まらない。例えば何らかのモデルの任意の点に対して接している平面とかを描きたいのなら、そのときはモデルの頂点から4つめのパラメータは求めることが出来る。 どういう風にコーディングすればいいとかは自分で考えるべきだろう。わからないことがあって、どうしても聞かなければならないというのならせめてもっと何をどのようにしたいか等を具体的に言おう。
627 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:52:01 ] 「法線ベクトルの値をパラメータにして平面を描画したい」と言われても いったい具体的に何がやりたいのかさっぱりわからないね。
628 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 02:46:24 ] 平面と視錐台が交差するかチェック。しなかったら何も描画しない。 交差したら交点を求めて、その交点を元にポリゴンをレンダリング。 というのが一番まじめな無限平面を描く方法だろうか。 場合によっては十分大きな一枚ポリゴンを適当に向きが合うように行列掛けてレンダリングするとかでいいんじゃないだろうか。 他にはフラグメントシェーダでレイトレして平面をレンダリングするとか。
629 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 05:46:08 ] 別に無限じゃなくてもいいんでしょ? 原点から距離cのところに法線(1,0,0)の適当な平面を描いて それを法線Nの座標系に変換するのが簡単じゃね 適当なベクトルとNの外積で変換行列は簡単に作れるし
630 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 14:21:51 ] OpenGLでは無限遠は見えないしな。
631 名前:デフォルトの名無しさん [2009/11/05(木) 19:31:47 ] GL_TRIANGLESを使って描画した三角形の大きさを拡大・縮小するには どうすればよいのでしょうか?
632 名前:621 mailto:sage [2009/11/05(木) 20:00:46 ] Ax+By+Cz+D=0のDの絶対値って 法線ベクトルを正規化しているときには 原点から平面に下ろした垂線の長さになりますよね A,B,Cで向きだけ決めて原点と平面上のどっかの点を使って 垂線と平面の交点を求められないかなあと考えたのですが なんだかこんな話していたら数学の話になってしまいますよね
633 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 21:00:12 ] OpenGL 始めてすぐは計算幾何にいろいろ戸惑うのも分かる。自分もそうだった。
634 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 21:44:31 ] 求められないかなぁって、求められない理由がわからない。621は中学生くらい?
635 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 21:56:43 ] 2chらしい反応だな 頭よいでちゅねとでも言ってほしいのか?
636 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 21:58:57 ] 中学生なみの思考回路だな
637 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 22:25:24 ] 距離Dで法線Nなら交点はD*Nじゃないの?そういう話ではないのか
638 名前:デフォルトの名無しさん [2009/11/06(金) 19:44:56 ] 「一時的にデプスバッファをすり替えて描画しステンシルマスクを作った後、 元のデプスバッファに戻して上記ステンシルマスクを使用し描画。」 この処理を何度も繰り返す必要があり、 デプスバッファの切り替えとして、 glReadPixels(),glDrawPixels()、GL_DEPTH_COMPONENT を読み書きしているのですが、 glDrawPixels()がとにかく遅いです。 一時的にデプスバッファの参照先を切り替えるなど、 何か良い方法はないでしょうか?
639 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:50:22 ] 一般的には glReadPixels の方が遅いと思うが・・・ ステンシルマスクを作るのにデプスバッファが不要なら、その間、単に無効にするとか glDisable(GL_DEPTH_TEST); glDepthMask(GL_FALSE);
640 名前:638 [2009/11/06(金) 20:11:08 ] >>639 ステンシルマスクを作る為に一時的に特定のデプスバッファが必要になります。 その後、元のデプスバッファが必要なんです。
641 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:54:24 ] ふと思っただけで出来るかどうかわかりませんがー レンダリング先がFBOなら、必要に応じてデプスバッファのレンダーバッファを切り替えたりできたりして そうじゃなければその一時的に使用するデプスバッファをテクスチャにしてピクセルシェーダーで距離比較しながらステンシルを生成とか とりあえずリアルタイム処理中にglXXXPixelsの類は使用禁止でしょう
642 名前:638 mailto:sage [2009/11/09(月) 23:03:26 ] >>641 床井先生の「Depth Peeling」とやりたいことが似ていたので、 参考にしてデプステクスチャとデプス値を比較させるとうまくいきました。 レスポンスも悪くなさそうです。 ありがとうございます、助かりました。
643 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:58:23 ] PSP/PS3/Wii/DS OpenGLが扱えればこれらのグラフィックス部分が開発できる!!! まんまOpenGLなのはPSP/PS3だけなのだが。
644 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:14:14 ] なぜiPhoneやアンドロイドが含まれていないのか
645 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:15:27 ] まぁ現実は色々と簡単な話ではないのだが、俺もDirectXかOpenGLどっちを勉強しようかと考えたときに、決め手になったのはクロスプラットフォームな点だったな。
646 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:24:15 ] いい加減、「おーぷんぐる」ちゅうのやめて欲しい ただでさえ赤面しそうな響きなのに GLSLを「ぐるえすえる」とか言われたときは脳髄に電気が通った。
647 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:47:34 ] そうだよな、やっぱり「おーぷんぐら」だよな
648 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 10:55:30 ] じゃあ俺は「おーぷんぐり」で
649 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 14:41:00 ] おーぷんぐろ
650 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 15:06:18 ] おーぷんごり ごりさる
651 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 19:19:06 ] ここはレベルの高いスレですね
652 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 21:04:58 ] OpenALは?
653 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 21:20:38 ] おーぷなる? なんかオプーナみたいだな
654 名前:デフォルトの名無しさん [2009/11/11(水) 22:26:07 ] OpenAL = オープン有る OpenGL = オープン汁
655 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 22:37:55 ] ここは格調高いスレですね
656 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 10:12:37 ] |┃三 / ̄\ |┃ | | |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \ |┃ | (__人__) | |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
657 名前:デフォルトの名無しさん [2009/11/13(金) 17:56:28 ] GL VIWER ではGLSL1.3の機能が使えることになってるのですが、OPENGLの関数で調べると、バージョンが1.2のままでした。 これって、GL VIWER の誤作動でしょうか?それとも、プログラム側から、現在のバージョンより上の機能を使うことができるのでしょうか?
658 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:13:03 ] GL_ARB_shader_objects拡張とかGL_ARB_vertex_shader拡張とかGL_ARB_fragment_shader拡張では?
659 名前:デフォルトの名無しさん [2009/11/15(日) 23:34:59 ] OpenGL3.2をダウンロードしたいのですが 何処からDLすれば良いのか判りません。 是非、教えてください www.opengl.org/registry/
660 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:36:20 ] それはドライバの問題ですのでビデオカードの製造元へお問い合わせください
661 名前:659 [2009/11/16(月) 14:16:01 ] >>660 それは>>私>>659 に対する返答ですか?
662 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 17:03:25 ] DirectXと同じように"OpenGL 3.2 SDK"みたいなのが存在すると思ったら大間違い。
663 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:02:35 ] ああいうのと違って若干面倒臭いんだよ。 GREWでググる必要もあるかもね。
664 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:06:43 ] どのみちハードとドライバが対応して無いと動かないのは一緒だけどね あっちのが安定感はあるけど
665 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:28:35 ] ああいうのとかあっちのとか言われてもわかんねー なんだGREWって?w
666 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:34:02 ] 日本語が苦手な奴と、自分で調べられない奴はプログラミングに向いてない。 これは割とマジな話。
667 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:38:00 ] GREWワロタw
668 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:54:09 ] 今の時代ならC# + OpenTKとかでOpenGLにまず触れてみるのがいいかもね。エントリポイントの記述とかはもちろんGLEWとかについても考える必要が無いし。
669 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 21:19:17 ] WEB上から拾ってきたサンプルプログラムを参考にして勉強中なのですが、 glGenBuffers(1, &vtxID); //glGenBuffers は glew.h で定義されている関数 このような箇所で、アクセス違反を起こしてしまい先に進めません。 glutInit(&argc, argv) も glewInit() もエラーになっていません。 他にもシェーダ関係 glCreateShader も駄目です。 環境は、OS:WindowsXP, Video:Radeon IGP 340M(Omega 3.8.442), OpenGL1.1 古いハードですが、新機能分も glew(1.5.1) でどうにかしてくれないのでしょうか? そもそも別の原因なのでしょうか?
670 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 21:52:34 ] >>669 openGLのどのバージョンが使えるかはハードとドライバーの問題 glewはドライバで拡張された機能へのアクセスをサポートする便利ライブラリにすぎない openGL1.5が使いたければ if (GLEW_VERSION_1_5)が通るハードとドライバが必要 使い方 ttp://glew.sourceforge.net/basic.html # glGenBuffersARBだと使えるとかは? # GLEW_ARB_vertex_buffer_objectをサポートしてれば...1.1じゃ無理か
671 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:13:32 ] >>670 ありがとうございます。 GLEW のbin に入っていた glewinfo.exe で使える/使えない関数リストが得られました。 GL_VERSION_1_1: OK --------------- GL_VERSION_1_2: MISSING --------------- glCopyTexSubImage3D: MISSING glDrawRangeElements: MISSING glTexImage3D: MISSING glTexSubImage3D: MISSING 後は、ひたすら、MISSING ... glGenBuffers, glCreateShader, ... glGenBuffersARB みんな駄目でした。 大げさな3Dのゲームとかじゃなくてちょっと試してみたかっただけなんですが、 私の環境ではどうも無理みたいです。。。 Omega Driver なら、glew なら、と思っていたんですが。
672 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:08:38 ] GLSL1.50で軽くジオメトリシェーダ使ってみたが、ここまで出来たら計算コストとか切羽つまらない限りバーテックスシェーダいりそうにないな。
673 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:55:23 ] MSAAを使ってるんですが、最近のグラボなら大抵使える機能なのでしょうか? もし、普及率が低いならフラグメントシェーダーで実装することも考えているのですが、実装方法がいいのが思いつかんのです・・・ メモリや処理負荷は抑えたいのです。
674 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:45:59 ] 最近のならほとんど使えると思うよ。
675 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 14:28:04 ] >>674 ありがとうございます。 あと、OpenGLの描画先をウィンドウではなくてテクスチャなどにしたいんですが、どうすればいいでしょうか?
676 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:04:45 ] ググりなさい
677 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:25:36 ] ググるキーワードがわかりません
678 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:29:02 ] オフスクリーン○○○○○○
679 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:31:32 ] そのレベルならシェーダー触るのは早い気がするよ。 まずは固定パイプラインにおける基礎から学ぶのがいい。
680 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:31:36 ] OpenGL テクスチャに描画 とか OpenGL draw to texture とか いくらでも思いつくだろ?
681 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:44:15 ] いや、固定パイプラインなど触れる必要は無い じゃんじゃんジオメトればいい
682 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:50:20 ] サンプルが溢れているなら最初っからシェーダでもいい気がするが、シェーダ使ったサンプルが少ないからなぁ。 まずはシェーダは置いといてOpenGLの一通りの機能試したほうが、頭の中の整理が出来ていい気がする。あくまで個人的な意見だけど。
683 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:06:05 ] シェーダーは環境を限定するからなぁ。未だに1.3とかの環境も結構あるわけで。
684 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:17:34 ] 色々ググって、見つかりましたが、拡張機能でないのとなると、バックバッファに描いたものを glCopyTexSubImage2D関数を使ってテクスチャにコピーというものでした。 一応はなんとかなりそうです。 にしてもやってることは同じなのにDirectXとは見た目が大分違いますね。戸惑います・・・。 ありがとうございました。
685 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:19:18 ] >>684 対応してるOpenGLのバージョンは?
686 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:31:21 ] 対応してるとは?何にでしょうか?
687 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 18:05:57 ] >>686 君が使ってるOpenGLのバージョン。
688 名前:デフォルトの名無しさん [2009/11/23(月) 19:39:55 ] CT画像(bmp)を読み込んでボクセルで表示を行いたいのですが、 参考になるようなサイト等はありますか?
689 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:39:22 ] ググりなさい
690 名前:デフォルトの名無しさん [2009/11/23(月) 22:59:35 ] >>689 すいません。ググっても出てこないもので…
691 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 23:14:20 ] ググって出てこないようなサイトは関係者以外教えてあげられないと思う。
692 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 23:14:50 ] それ以前になんてキーワードでググったのか気になる URL晒せ
693 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 23:57:08 ] >>687 私のとこは2.1.2でした。できるだけ多くの環境を考えたいので、拡張はできれば避けたいんですよね・・・
694 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 00:09:50 ] 動かしたいターゲットPCを設定して、そこで動く拡張の範囲でやればいいんじゃないの 今時一切の拡張を使わないってのは現実的じゃないし アプリケーションの種類にもよるんだろうけど、FBOとかシェーダーとかそろそろ気軽に使っていいと思うんだけどな
695 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 00:16:50 ] あなたの意見なんて聞いてませんよ
696 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 00:26:57 ] もう、対応バージョンとか細かいこと調べるの疲れてしまいました・・・orz 時間が無いのに、なんでこんなに調べづらいんでしょう・・・ハァ
697 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 00:47:50 ] いま床井先生のテクスチャマッピングのほんをよんで投影マッピングを勉強してます そこで、はじめのイメージでは何にでも投影できるとおもっていたのですが、例えばティーポットにはムリですよね? 投影マッピングは射影テクスチャリングなどともよばれて、下のHPに載ってます asura.iaigiri.com/OpenGL/gl45.html
698 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 01:34:55 ] >>697 glutSolidTeapotはUV自動生成だから
699 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 01:57:28 ] だから••• ムリ?
700 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 02:01:58 ] >>697 逆にティーポットには無理と考えた理由がわからないんだが
701 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 02:14:37 ] 床井先生の用語で話すけど 頂点の座標とテクスチャの座標を一致させるところで サンプルでは立方体を表示させてたから、その立方体がテクスチャ座標で、頂点の座標と対応させるとおもってた →ティーポットは対応させる点がないからムリ
702 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 02:33:58 ] ぐだぐだ言ってる間に、glutSolidCubeをglutSolidTeapotに入れ替えて試してみたのか? 頂点シェーダを見る限り、テクスチャ座標は頂点座標から自動計算しているようだが。
703 名前:デフォルトの名無しさん [2009/11/24(火) 02:35:13 ] ティーポットにするとぐちゃぐちゃに
704 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 02:41:54 ] >>701 普通にティーポットをウインドウに表示させるとする。 ティーポットは3Dで表示されている。 ところで、ウインドウはx軸とy軸を持つ2Dのビットマップだが、 u軸とv軸を持つ2Dのテクスチャと見ることも出来る。 そのとき、ティーポットの頂点のビットマップにおける座標xyを、 テクスチャのuvとみれば、投影マッピング用のテクスチャ座標となる。
705 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 02:54:42 ] ティーポットの頂点のビットマップにおける座標xy? 取得できるの? >>702 リンク先のプログラムはエラーメッセージがでて終了してしまう
706 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 03:14:07 ] リンク先の普通に動いたが
707 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 03:17:19 ] >>705 それは自分で計算する。 リンク先のVertexProgram::49がそう。 アンタがいまいちぴんときてないのは、 通常のレンダリングパイプラインの仕組みの 理解が足りないからか。
708 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 03:50:11 ] うーん、色々ダメですね 今はリンク先のプログラムを動かそうとしています 床井先生のプログラムで、立方体をティーポットにしたら、テクスチャがグチャグチャに表示されました きれいに投影できるか考えてみたいとおもいます
709 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 04:01:49 ] リンク先の動かないよ… Error : No valid techniquesとかでる Cg Toolkitのインストールは同ページを参考にしてる VC++ 2008だからとおもったけど706さんは動いたっていう…
710 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 05:12:34 ] グラボ/ドライバがvp40/fp40に対応してないんじゃね TexProj.cgfxファイルの vp40 fp40をvp20 fp 20に変えたら動くかもよ なんのボード使ってるかしらんからわかんないけど
711 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 16:31:43 ] >>696 >>694 が言っているようにそろそろ抵抗無くFBOあたりは使ってもいい気がする。とりあえずFBOを拡張で呼んでおけばOpenGL1.5より先のハードで動くわけだし。 あんまり対応ハードのこと考えてるとOpenGLに限らずDirectXでもいい機能が使えなくなるよ。 NV拡張とかATI拡張とか使う気が引けるのはわかるけど。
712 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 16:38:20 ] 最低でもノートパソコンで動かないとね。
713 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 17:18:00 ] ノートパソコンといってもピンキリだが
714 名前:デフォルトの名無しさん [2009/11/24(火) 18:30:56 ] gluLookAtでy軸を上側になる場合とz軸が上側になる場合とで 同じ結果になるためには 3次元座標の各値をどのように変換すればよいのでしょうか? 何も特別に設定しない限りは前者がデフォルトだったと思うのですが 後者のように設定したもので
715 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 23:33:29 ] >>714 別に変換はいらないと思うよ。頂点情報とかをZ軸を上として対応させるといい。
716 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 18:11:28 ] >>688 OpenGL Volumizer のマニュアルとか、品質上げるなら Pre-Integrated Volume Rendering とか。 Pre-Integrated... では register combiner なんか使ってたりするけど、 最近は安いカードでも 3D Texture も使えるしフィルレートも上がったしフラグメントシェーダも使えるしで、 普通に 256^3 を全画面表示でクルクルとかできる。値変換したり色付けたりも GLSL で簡単に。
717 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 17:48:31 ] C#でOpenGLは可能ですか?
718 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 18:19:01 ] ,.-─ ─-、─-、 , イ)ィ -─ ──- 、ミヽ ノ /,.-‐'"´ `ヾj ii / Λ ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{ ノ/,/ミ三ニヲ´ ゙、ノi! {V /ミ三二,イ , -─ Yソ レ'/三二彡イ .:ィこラ ;:こラ j{ V;;;::. ;ヲヾ!V ー '′ i ー ' ソ Vニミ( 入 、 r j ,′ ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ ヽ ヽ -''ニニ‐ / | `、 ⌒ ,/ | > ---- r‐'´ ヽ_ | ヽ _ _ 」 ググレカス [ gugurecus ]
719 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:44:53 ] >>717 スレ読め。
720 名前:デフォルトの名無しさん [2009/11/30(月) 13:36:02 ] glBegin(GL_POINTS); で点を描画したいんだけど 結果を見たら点列が表示されません glPointSize();で点のサイズを10にしたり極端に大きくしたりしたんですが それでも点列が表示されないのですが何が原因なんでしょうか? 環境はMac OS X 10.6です
721 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 15:07:02 ] それだけだと原因はいくらでも考えられて挙げるとキリがないのでソースうpしたまえ
722 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 06:27:42 ] 背景色と描画色が同じだったりなw