1 名前:デフォルトの名無しさん [2007/04/26(木) 02:43:38 ] クロスプラットフォーム 3D API OpenGLに関する話題を扱うスレッド。 禁止事項 ・「OpenGL終了」系のまず価値否定ありきの主観発言(客観的な懸念要素を挙げた上での建設的議論は可) ・学歴・理系か文系かに関連する差別発言 ・その他の荒らし全て これらは付き合うだけ無駄なので無視しましょう。 - 前スレ - OpenGLスレ Part10 pc11.2ch.net/test/read.cgi/tech/1141034983/ - 関連サイト - www.opengl.org/ www.mesa3d.org/ developer.nvidia.com/ www.ati.com/developer/ developer.3dlabs.com/ - 過去スレ - 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落ち)
44 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:02:46 ] void disp( void ) { float f; glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); for(f = 0 ; f < 1; f += 0.1) { // glColor4f(0 , f , 0, 0.2); glCallList(DISP_LIST_INDEX); } glPopMatrix(); glFlush(); } void setDispList( void ) { glNewList(DISP_LIST_INDEX , GL_COMPILE); glBegin(GL_POLYGON); glVertex3f(-0.1 , -0.1 , -0.1); glVertex3f(-0.1 , 0.1 , -0.1); glVertex3f(0.1 , 0.1 , -0.1); glVertex3f(0.1 , -0.1 , -0.1); glEnd(); glTranslatef(0 , 0 , 0.1); glEndList(); } ポリゴンをミルフィーユのように重ねたものを表示したいのですが このようにやってみて、一応重なったのですが、なんとなくスマートではありません -0.1〜0.1の正方形のポリゴンを10枚重ねて表示するにはどうやったらいいのでしょうか また、その1枚1枚に別々のテクスチャを貼っていきたいのですが 御指導お願いします
45 名前:デフォルトの名無しさん [2007/06/06(水) 22:24:23 ] > ポリゴンをミルフィーユのように重ねたものを表示したいのですが そもそもこれがわからない
46 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 22:32:01 ] glTranslatefを外に出す for(){ glTranslatef(0 , 0 , 0.1); glCallList(hoge); } こんな感じ テクスチャーが10枚とも固定されているなら、DisplayListに 描画命令を埋め込んでもいいと思うが、動的に変更されるなら、 DisplayListは使用しないほうがいいと思う。 あと、GL_BLEND, glBlendFunc あたりを押さえておく必要があります。
47 名前:40 mailto:sage [2007/06/07(木) 01:27:22 ] >>41 >>43 なるほど。参考になりました。ありがとうございました。 新しいドライバが出ているビデオカードでの開発になると思いますので、大丈夫そうですね。
48 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 12:53:15 ] >>46 ありがとうございます テクスチャが10枚とも別のものなので 1枚1枚別のを指定しないといけなくて…そこでも躓いてしまっています DisplayListを使わないやり方ですと 頂点を1個1個書いていくのでしょうか? glbeginのところにfor文を入れたらエラーになってしまって、DisplayListを使いました
49 名前:デフォルトの名無しさん [2007/06/07(木) 16:20:53 ] > glbeginのところにfor文を入れたらエラーになってしまって、DisplayListを使いました 別にglbeginをfor文で囲ってもエラーにはならないよ。 実際の コードだしてみないと、わからない
50 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 17:58:43 ] void disp( void ) { float i; glClear(GL_COLOR_BUFFER_BIT); glBindTexture(GL_TEXTURE_2D , texName); for(i=-0.5;i<0.5;i+=0.1){ glBegin(GL_POLYGON); glTexCoord2f(0 , 0); glVertex3f(-0.5 , -0.5 , i); glTexCoord2f(0 , 1); glVertex3f(-0.5 , 0.5 , i); glTexCoord2f(1 , 1); glVertex3f(0.5 , 0.5 , i); glTexCoord2f(1 , 0); glVertex3f(0.5 , -0.5 , i); glEnd(); glBegin(GL_POLYGON); glTexCoord2f(0 , 0); glVertex3f(-0.5 , i , -0.5); glTexCoord2f(0 , 1); glVertex3f(-0.5 , i , 0.5); glTexCoord2f(1 , 1); glVertex3f(0.5 , i , 0.5); glTexCoord2f(1 , 0); glVertex3f(0.5 , i , -0.5); glEnd(); } glFlush(); glutSwapBuffers(); } すいません…勘違いをしていて、これで表示が出来ました これに1枚ごとにテクスチャを変えていけると、なんとか出来そうなのですが
51 名前:デフォルトの名無しさん [2007/06/07(木) 18:45:26 ] そこまでできたなら、あとは、プログラミング言語の習得の問題だね テクスチャーを配列に入れて、ループ内で、BindTextureすればいいんでないの。
52 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 18:51:50 ] その貼り付けたいものが 1枚ずつ(積み重ねているものの下〜上までで)違っていて さらに縦方向(1回目のglbegin)と横方向(2回目のglbegin)で異なっていて そこで、どう組んでいけばよいか躓いてしまいました ただ…あと少しという感じがしているので、もう少しテクスチャマッピングの項を見て勉強します。
53 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 03:06:58 ] 質問させてください 科学シミュレーションで行う温度の可視化のようなものをしようと考えています (▽こんな雰囲気) www.mathworks.com/access/helpdesk/help/techdoc/visualize/volvis_sliceplane2.jpg 表示する色の与え方についてOpenGLのサンプルを 探してみたのですが見つからず、とりあえず素人考えで 「可視化対象の変数値分布を0-1の範囲に変換」 →「HSV色空間におけるHの0度(赤)-240度(青)に割り振り」 →「HSV->RGB変換して表示」 と試してみたところ、まあまあイメージ通りのものができました・・・ が、他にもっと優れた方法やサンプルがあれば教えて頂きたく存じます どうぞ宜しくお願いします
54 名前:デフォルトの名無しさん [2007/06/08(金) 03:58:20 ] GDI、OpenGL、Direct3D、ソフトウェアの描画で2D、3Dの軽さに順位をつけるなら?
55 名前:デフォルトの名無しさん [2007/06/08(金) 08:48:31 ] >>54 環境によるが 2D、3Dとも Direct3D ≒ OpenGL >>>>>>>>> ソフトウェア描画 > GDI
56 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 08:49:33 ] 3DはOGLのほうが綺麗だろう
57 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:02:14 ] 綺麗とかナンセンス。どっちも大体同じこと出来るから。
58 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:01:10 ] 基本的にD3DとGLの速度比較ならD3Dのほうが少し軽いと思って間違いないよ もちろん例外はあるけど最近のハードならほぼ間違いない
59 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:33:45 ] 理由は?
60 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 19:51:07 ] D3DはMSだから重いよ
61 名前:デフォルトの名無しさん [2007/06/08(金) 19:54:40 ] D3Dの方が軽いと見るのが普通。
62 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 20:50:40 ] 理由は?
63 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 20:52:04 ] >>53 > 「可視化対象の変数値分布を0-1の範囲に変換」 > →「HSV色空間におけるHの0度(赤)-240度(青)に割り振り」 > →「HSV->RGB変換して表示」 なんとなくこの部分は1次元テクスチャーを先に作って割り振ったほうが負荷がかからんのじゃないかと思う。 もしかしたらそうやってるのかもしれんけど。
64 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 21:24:17 ] すいません BMPのある1色(黒)をマスクのように抜きたいのですが glBlendFunc(GL_ONE , GL_ONE );だと 後ろが極端に白くなってしまいます ただ、抜くだけにはどうすればいいのでしょうか
65 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 22:11:30 ] >62 自分でd3d/glの切り替え可能な描画エンジン組めばわかるよ
66 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 22:15:23 ] GL_ONE,GL_ONEだと加算合成。 GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHAだと普通のアルファ合成。 ちなみに一色だけで抜きたいというのであれば、 ブレンドは使わずにAlphaTestのほうが高速。
67 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 22:28:37 ] 具体的な理由が思いつかなくて逃走ですかね。
68 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 22:40:55 ] そうですね^^
69 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:01:39 ] >>65 どうせ環境依存だし実際にどっちが速いかはそんなに気にならないけど、 どうして D3D の方が確実に速いと思ったかにはとても興味がある。
70 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:12:11 ] どうこう言ってもドライバー次第だと思うけどなぁ
71 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:20:09 ] D3Dのドライバはかなりの共通部分を部分をマイクロソフトがライブラリの一部として提供しているのに比べ GLのドライバは全てベンダが提供しなければならない(シェーダコンパイラでさえも!! さらに速度が最も重要視されるゲーム市場においてシェアに圧倒的な差がつけられている 結果的にどちらのドライバが信頼性、速度において洗練されるか言うまでもない
72 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:25:00 ] >結果的にどちらのドライバが信頼性、速度において洗練されるか言うまでもない OpenGLと言うまでも無いな
73 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:26:58 ] そうですね^^
74 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:30:14 ] >>66 AlphaTestで色々ためしていたのですが どうも色が抜けなくて 床井さんの所では、画像の抜きたいところを透明に処理してから使ったりで やりたいのは黒(っぽい)ところを、黒ければ黒いほど透明にしたいのです RGB=000 ならαも0 RGB=111 ならαも1 といった感じで。。。
75 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:39:52 ] 3Dの軽さ Direct3D>ソフトウェア>OpenGL>GDI 2Dの軽さ ソフトウェア>Direct3D>OpenGL>GDI
76 名前:デフォルトの名無しさん [2007/06/08(金) 23:41:06 ] >>71-72 まあまあ^^; ここはOpenGLスレなんだからその辺にしといてくれよ。
77 名前:デフォルトの名無しさん [2007/06/08(金) 23:41:52 ] >>74 Alha Testするには、黒とかの色じゃなくて、 アルファが重要なのはわかる?
78 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:53:49 ] >>77 はい。 ポリゴンに白黒のテクスチャを貼り付けているので それ自体にα値が無いのでAlphaTestが出来ないのはわかっています こういう場合はどうやって抜けばいいのでしょうか…
79 名前:デフォルトの名無しさん [2007/06/09(土) 00:30:25 ] >>78 ・テクスチャー生成時に、抜きたい色のα情報をテクスチャに書き込む ・シェーダーでゴニョゴニョ(アホ
80 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 00:47:26 ] 共通のシェーダコンパイラってGPUごとの最適化が利かないんじゃなかったっけ?
81 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 00:51:01 ] 白黒のテクスチャーだったら、DSTにGL_SRC_COLORとか試してみるといいんじゃないの? GL_DST_COLORとかあるんだっけ? まあ、自分でやってないのでどうなるかはわかんないけど。
82 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:04:52 ] 本当に究極までドライバの最適化を極めれば仕様上GLのドライバのほうが早くなる 何故なら全てのカードごとに最適化されたドライバを書くことすら出来るからだ 実際に固定機能時代のnVIDIAのカードのパフォーマンスはD3Dを上回った これはQuakeエンジン等のGLベースエンジンの活躍が大きな要因だろう しかしその後のAPI仕様の肥大化、プラットフォームの多様化等のせいで 個別の最適化どころかそこそこの速度と信頼性を維持するのがやっとというのが現状
83 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:30:24 ] 結論をいうと、本格的にやるならOpenGL。 お遊び程度ならD3D。
84 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:33:57 ] 本格的なら両方やっとけ
85 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:49:18 ] 2Dならソフトウェアのほうが軽いのか?
86 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:55:01 ] んなわけない ハードウェアに依存しないから昔のマシンでもそこそこの速度で安定して動くんで使いやすいという程度
87 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:03:55 ] 実際OGLやD3Dに比べりゃソフトウェアの方が軽い。
88 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:05:38 ] そうですね^^
89 名前:53 mailto:sage [2007/06/09(土) 02:18:37 ] >>63 なるほど、1次元テクスチャですかー その辺あまり詳しくないので調べてみようと思います どうもありがとうございます
90 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:39:21 ] >>85 Mac のデスクトップは 2D も OpenGL で描画してるよ
91 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:46:53 ] ここで言うソフトウェアってのは画像描画、ブレンド、ラスタライズその他諸々をCPUでやるってこと MacでもGLの出番はクライアント領域への描画だけ
92 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:48:41 ] そりゃ描画処理切り替えやハード依存を無くす為だろ
93 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:55:58 ] 90=92? 何が言いたいのかわかんないんだけど MacでデスクトップがソフトウェアでもGLで描画していようとも ソフトウェアレンダリングするなら速度に影響しないからどうでもいいでしょ?
94 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:58:34 ] ここでソフトウェアレンダリングって言うと紛らわしいな ○ソフトウェアでラスタライズ
95 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:03:21 ] ああ、わかった >90はデスクトップ描画に使うくらいGLは軽いって言いたかったのかな? もしそうならすまんかった
96 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:10:38 ] OGLはスペック要求されるから重くなるのは必然
97 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:15:25 ] >>89 わかってるかもしれませんが、1次元テクスチャによる色変換は いわゆる依存(従属)テクスチャ処理になるからシェーダが必須ですよ〜。
98 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:23:39 ] >>91-95 何がしたいんだ?
99 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:32:43 ] (´・ω・`)知らんがな
100 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:07:42 ] >>81 glBlendFunc(GL_ONE ,GL_ONE_MINUS_SRC_COLOR); で上手く黒が消えて、白いところだけ出てきました! ありがとうございました。。。なんか涙出てきた
101 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:09:18 ] OpenGLは最後に塗るとき以外、使い物にならないといいたいんだろう。
102 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:26:19 ] さすがにブレンドはGPU上じゃろう
103 名前:デフォルトの名無しさん [2007/06/09(土) 12:19:06 ] >>85 2Dなら、むしろ、画質向上のためアルファ付きテクスチャーを多く描画することになると 想定すると、Zバッファが使えなくなって、重くなることもある。 まさか、いまどき、2Dで、ジャギジャギのドット絵スプライトの描画なんて、そうそうねーし。 まあ、場合によりけるだが・・・
104 名前:デフォルトの名無しさん [2007/06/09(土) 12:20:54 ] >>82 懐かしいなー。 前世紀は、Quake3時代だよな メーカーが、こぞって、OpenGL対応をうたってて、OpenGLの方ががメチャ速い(気のせいかも)時代だった
105 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:02:18 ] 大量のテクスチャを大量に貼り付けるとき for(i =0; i < 枚数(512〜); i++) { glBindTexture(GL_TEXTURE_2D, texture[i]); } のように、番号を保管するtexture[]配列を作らないとだめでしょうか? forの中で、順次貼り付けるテクスチャを更新していって 貼り付けて描画→次のを貼り付けて描画→…終わりまで で texture 変数を更新するだけでやるのは可能でしょうか。
106 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:06:20 ] 出来るけどかなり遅いよ
107 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:14:53 ] >>106 配列でやるよりも遅くなるのですか。。。 枚数がたくさんになりそうなので(512×3 や 1024×3)あまりメモリを使いたくなくて… for(i =0; i < 枚数(512〜); i++) { SetTexture(i);//テクスチャを連番で取得する関数 glBindTexture(GL_TEXTURE_2D, texture[i]); //i枚目テクスチャを貼り付け } というやり方を考えていました。
108 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:18:05 ] ごめん、テクスチャの中身を更新するのと勘違いした そのやり方が普通だよ
109 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:36:06 ] ありがとうございます! これで迷い無く組めそうです。 あと、上のは少し違っていました glBindTexture(GL_TEXTURE_2D, texture); こうやっていくつもりでした。 テクスチャの中身を更新、というのは具体的にどういうことなのでしょうか 私のは中身を更新、していないのですか? すみません…何回も何回も
110 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:44:04 ] 最初glBindTextureの代わりに毎回glTexImage2Dで画像をロードするのかと思ったんだよ これだと劇的に遅くなる代わりにメモリはテクスチャ1枚分しか使わないから
111 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:06:13 ] ] 授業単元:プログラミング実習 2] 問題文(含コード&リンク): 2教科のテストの点数を入力し、その2つの点数に 任意の点数を加算する関数を、ポインタを使って定義し、以下のように出力するコー ドを提出しなさい。 例)2教科分の点数を入力してください。 78 65 加算する点数を入力してください。 12 12点加算したので 科目1は90点になりました。 科目2は77点になりました。 [3] 環境 [3.1] OSLinux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限:6月11日17時まで [5] その他の制限: 配列を関数までならいました。ポインタは初めてです とにかく初心者です。 よろしくお願いします(><)
112 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:06:30 ] おそらく私がやろうとしているのは、そうなっています SetTextureのところで、毎回違う画像(BMP)を拾ってきて、それをテクスチャにして ポリゴンに貼り付けていくので…
113 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:12:51 ] >112 それだとglBindTextureはいらないよ glBindTextureは時間のかかるglTexImage2Dなどのテクスチャロード処理を事前にやっておき 描画を高速にするためのものだから
114 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 15:44:51 ] OpenGLの勉強を始めたい大学生ですがCygwinでも大丈夫でしょか? それともVisual studioを買って勉強したほうがいいでしょうか? 自分のパソコンにはCygwinが入っていて大学だとVisual studioなのですが。 何か違いが出てきますか?
115 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:05:14 ] Cygwinだとどうなるのかは知らないけど、 今はVisualC++2005 ExpressEditionという無料のバージョンがあるよ OpenGL用のSDKが追加で入るのかは知らないけど
116 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:32:15 ] ExpressEditionだったら、プラットフォームSDKをいっしょに入れればOpenGLのSDKもついてくるよ。 ダウンロードするページにプラットフォームSDKを一緒に使いましょうみたいなお知らせがあるし、 でないとwindows.hもつかえないんじゃなかったっけ?
117 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:04:20 ] ttp://plaza.rakuten.co.jp/kojimatch/diary/200606290000/ ここに導入方法が
118 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:56:00 ] Cygwinでも大丈夫だし、そっちのほうが後々Linux等で動かしたくなったときに 楽かもしれないよ。大変かもしれないけど。
119 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 12:34:18 ] > 楽かもしれないよ。大変かもしれないけど。 どっちだよ
120 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:14:25 ] だってwin32API使ってたら互換性ないしさ
121 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:29:45 ] すいません109で聞いたものなのですが テクスチャを大量に貼り付けるのに、このようにしたのですが、何も貼られなくて進めなくなっています… 床井先生のところをみながら、手探りでやっています。 static void SetTexture(int i){ /* テクスチャの読み込みに使う配列 */ GLubyte texture[TEXHEIGHT][TEXWIDTH][3]; FILE *fp; sprintf(texture1,"texture%04d",i); //連番でテクスチャ読み込み /* テクスチャ画像の読み込み */ if ((fp = fopen(texture1, "rb")) != NULL) { fread(texture, sizeof texture, 1, fp); fclose(fp); } else { perror(texture1); } /* テクスチャ画像はバイト単位に詰め込まれている */ glPixelStorei(GL_UNPACK_ALIGNMENT, 1); /* テクスチャの割り当て */ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXWIDTH, TEXHEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } ディスプレイ関数側ではこのように呼び出しています for(i=1;i<=SLICE_NUM;i++){ glBegin(GL_QUADS); SetTexture((int)i); /* テクスチャマッピング開始 */ glEnable(GL_TEXTURE_2D); glTexCoord2d(0.0, 1.0); glVertex3d(-1.0, -1.0, i/SLICE_NUM);glTexCoord2d(1.0, 1.0); glVertex3d( 1.0, -1.0, i/SLICE_NUM);lTexCoord2d(1.0, 0.0); glVertex3d( 1.0, 1.0, i/SLICE_NUM);glTexCoord2d(0.0, 0.0); glVertex3d(-1.0, 1.0, i/SLICE_NUM); glEnd();}
122 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:22:34 ] 121ですが、色々みて initやmain関数で先にテクスチャを確保しないとダメっぽいということがわかりました… 動的にディスプレイ関数の中で確保する方法とかないでしょうか
123 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:48:19 ] glBindTextureってどこでやってんの?
124 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:02:36 ] glBindTextureは使っていません テクスチャに関係している部分はココだけです。 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXWIDTH, TEXHEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, texture); ここで、開いたテクスチャが割り当てられると思ってやっていたのですが…
125 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:44:27 ] glEnableはglBeginとglEndの中に書いちゃダメだよ というか設定系はglBeginの前に全部終わらせといて Begin〜Endの中にはglVertexとかglTexCoordとかだけにしよう
126 名前:デフォルトの名無しさん [2007/06/10(日) 21:58:30 ] >>111 オメエ、mixiで手当たり次第に、マイミク登録して、聞いていただろう >>125 え!それ知らなかった。 それってどこかに書いてある?
127 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:58:50 ] >>125さん できました。 本当に、ただ、そこだけだったんですね SetTextureをBeginから出しただけで、思ったとおりに出来ました これだけのことなのに、ずっと悶々ググッていました すみません、ほんと助かりました これでようやく帰れます。。。ありがとうございました・゚・(ノД`)・゚・。
128 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 00:40:12 ] >>126 OpenGL SDKのリファレンス、glEnableのErrorsの欄にあった たぶん青本でも書いてあると思うよ
129 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 01:01:03 ] >>126 常識だぜ
130 名前:デフォルトの名無しさん [2007/06/11(月) 17:59:31 ] >>128 青本もってねーや。webで探してみる >>129 マジ?
131 名前:≠129 mailto:sage [2007/06/11(月) 19:14:30 ] >>130 マジ glBegin〜glEndの中では、glEnableが使えないというよりはむしろ ごく少数の限られたGLコマンド以外のほとんどがエラーになるんだでよ
132 名前:デフォルトの名無しさん [2007/06/12(火) 15:55:36 ] というのはガセ
133 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:23:04 ] 青本より引用 Only a subset of GL commands can be used between glBegin and glEnd. The commands are glVertex, glColor, glIndex, glNormal, glTexCoord, glEvalCoord, glEvalPoint, glArrayElement, glMaterial, and glEdgeFlag. Also, it is acceptable to use glCallList or glCallLists to execute display lists that include only the preceding commands. If any other GL command is executed between glBegin and glEnd, the error flag is set and the command is ignored.
134 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 05:00:11 ] カーマックktkr ttp://www.4gamer.net/news/history/2007.06/20070612202046detail.html
135 名前:デフォルトの名無しさん [2007/06/13(水) 06:16:56 ] > マップ全体が,20GBもある一つのテクスチャ画像で覆われており, > 例えば,マップ内にある山の頂上付近の色だけを変えたり, > 岩に名前を掘り込んだりといった具合に,マップの表面を自在に > 変更することが可能。さらに,パフォーマンスや安定性には一切影響を与えないという。 すげえな。 どうやってんだ? 20Gって、VRAM足りんよな? 動的に読み込んだりして、あとはどうするんだろ・・・
136 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 21:33:09 ] カーマックのDirectX嫌いも直ったみたいだしもうWinではGL使わないかもね
137 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 20:48:42 ] OpenGLの勉強を始めたいのですがおすすめの書籍・サイトはありますか? ちなみに大学生でVisual Studioは持っていないのでUNIX環境で作るつもりです。
138 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 21:38:30 ] GLUTによる「手抜き」OpenGL入門
139 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 21:58:18 ] リファレンスなんかはOpenGL SDKをどうぞ www.opengl.org/sdk/
140 名前:デフォルトの名無しさん [2007/06/16(土) 00:32:38 ] 驚愕の事実。 GLUIはLGPLのくせにスタティックリンクしかねぇ! ソース後悔はいやづら
141 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:07:26 ] せっかくgluiのソースがあるんだから、 gluiを *.dll とか *.so にコンパイルすればいいんでは。
142 名前:デフォルトの名無しさん [2007/06/16(土) 01:21:51 ] >>141 おっしゃる通りなんですが、ほとんどの機能がクラスで提供されているので、事実上無理ではないでしょうか
143 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:23:33 ] >>140 LGPL はスタティックリンクしてもソースは公開しなくて良いんだぜ。 他人が再リンク可能なようにする必要があるだけだから、リンク前の オブジェクトファイルを同梱しておけばオーケー。ソースは隠しておけ。
144 名前:デフォルトの名無しさん [2007/06/16(土) 01:28:53 ] >>143 おおっ、トリッキーな情報さんきゅです。 確かにそんなこと書いてあった気がする。 これで恥ずかしい自コードを隠しておけそうですヽ(´▽`)/