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落ち)
33 名前:おしえてちゃん mailto:sage [2007/06/03(日) 17:10:14 ] 赤本に載ってるのかなぁ・・・ 独学でやったからよく判らないんだよねぇ・・・
34 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:59:58 ] >>33 透明の時?
35 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:48:59 ] 一度ブレンドでGL_ONE,GL_ONEとか設定してみると理解できるんじゃなかろうか。 ブレンドの混合色はどのように作られるんですか、とかはここで聞く前に OpenGL ブレンド とかでググってくらさい。
36 名前:おしえてちゃん mailto:sage [2007/06/05(火) 19:15:30 ] 透明のときです>>34 GL_ONEについて調べてみました。 GL_ONEってfragmentしぇーだですよね。(だと思う。) それでそのしぇーだの内容を調べさせてもらったらただ単純に 結果の色 = 新しい色 * 1 + 元の色 * 1 みたいなことを、してるそうだとわかりました。 この場合、2度色をインプットしなければ混合色を作れません でなければ、しぇーだの内容が 結果の色 = 新しい色(1つめ) * 1 + 新しい色(2つめ) * 1 + 元の色 * 1 みたいな感じになってるはずです。 でも2番目のようなソースは見たことがありません。 やっぱり"順番をつけて"2度シェーダを呼んで 混合色を作っているってことなんでしょうか? どっかでトンデモな間違いをしてそうですが、そこらへんは勘弁してください。
37 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 19:56:27 ] OpenGLの基礎をちゃんと勉強しなさい。
38 名前:デフォルトの名無しさん [2007/06/05(火) 21:42:20 ] GL_ONEというか最終的なカラーブレンドはシェーダでないよ 古い方でもいいから赤本を図書館でもなんでも見付けて読みなさい
39 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:06:26 ] >>36 ブレンド処理はバックエンドのラスタオペレーションなので、フラグメントシェーダは関係無いです。 最初の >結果の色 = 新しい色 * 1 + 元の色 * 1 が正しいです。 「新しい色」てのが今処理してるポリゴンのフラグメント、「元の色」はフレームバッファの色ですね。 >この場合、2度色をインプットしなければ混合色を作れません その通り、混合色を作るには、ポリゴンを複数回重ね合わせます。
40 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:47:10 ] Windows Vista上でOpenGLはネイティブサポートされているのでしょうか? Aero Glassでは、DirectX 9をベースにしているため、 基本的にはOpenGLはDirect3Dにマップする形をとるような話が過去にあり、 それを裏付けるようなベンチマーク 結果 www.tomshardware.com/2007/01/29/xp-vs-vista/page6.html 製品FAQ? jp.wiki.mcneel.com/default.aspx/McNeel/RhinoOnVista.html www.housenetworks.jp/vista.html がある一方、 2007.04.20 Khronos OpenGL ARB ワーキング グループ khronos.jp/wp-content/uploads/opengl200704.pdf にあるような許容範囲内の速度で動くような話も出ています。 Driverしだい... ということでしょうか? フルスクリーンではなく、ウィンドウ内への描画を行っておりまして、 Aero Glassとの併用がどの程度のオーバーヘッドで実現できるのか 解らずにおります。 #開発PCにVistaがなく、私は嫌なのですが、 #今後、導入が計画されていまして...。
41 名前:デフォルトの名無しさん [2007/06/06(水) 06:55:27 ] メーカーのDirever入れてないVistaのOpenGLはめちゃくちゃ遅かったな。 確か、Geforce。 アプリは、ゲームだったんだが、ゲームにならないほど遅かった。 FPSはちょっと覚えていないが、10以下。 Driver入れたら、ちゃんと規定の速度で動いた。
42 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:59:03 ] またGeforceか。
43 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:13:16 ] 要はVista用の新しいドライバがあれば大体同じ速度で動く。 そうでなければDirectXのラッパーとして動かして OpenGL1.4までサポート・パフォーマンスはだいたい半減、 またはDWMを切って今まで通りに動かす。
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 おおっ、トリッキーな情報さんきゅです。 確かにそんなこと書いてあった気がする。 これで恥ずかしい自コードを隠しておけそうですヽ(´▽`)/
145 名前:デフォルトの名無しさん [2007/06/16(土) 18:19:21 ] > LGPL はスタティックリンクしてもソースは公開しなくて良いんだぜ。 嘘はいけないよ、嘘は・・・
146 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:28:43 ] >>145 釣りするつもりならもう少し工夫したらどうなんだ? 最近少し頑張りが足りないぞ。
147 名前:デフォルトの名無しさん [2007/06/16(土) 18:56:46 ] おいおい、LGPLは動的リンクでないとLGPLになるよ。 だから、みんな、DLLにしてるのに・・・
148 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:09:54 ] >>147 gnu.org 逝って来い 思い込みだけで書き散らしてないで、原文をきちんと読め
149 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:10:06 ] というかLGPLなのにソース公開されてないの?
150 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:49:54 ] つうか、2007 年にもなって LGPL にソース公開義務があると 思っている人間がいたのが驚きだ…
151 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 23:12:49 ] lgplを採用するプログラム(ライブラリ)自体にはソースの公開義務はあるだろうよ… ソースの公開義務が無けりゃ、BSDとかわらんではないか… 俺は勝手にwikipediaのttp://ja.wikipedia.org/wiki/GNU_Lesser_General_Public_Licenseが正しいとか思ってるんだが、どうだろうか?
152 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:41:18 ] for(i=0;i<WIDTH;i++){ for(j=0;j<HEIGHT;j++){ /* test source */ glGetDoublev(GL_MODELVIEW_MATRIX, model); glGetDoublev(GL_PROJECTION_MATRIX, proj); glGetIntegerv(GL_VIEWPORT, view); glReadPixels(i, j, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z1); gluUnProject(i, j, 0, model, proj, view, &x1, &y1, &z1); //スクリーン上の座標をワールド座標で取得 /* test source */ } printf(" at (%d, %d) --> ", i, j); printf(" at unproject (%lf, %lf, %lf)\n", x1, y1, z1); } スクリーン上の各ピクセルが、ワールド座標上でどうなっているのか知りたくて 上のようなソースを書いたのですが、変な値が入ってきます。 視点を<10 10 -20>において、<10 10 0>を見ているときに 左端のX〜右端のXを表示しても at (0, 256) --> at unproject (10.552285, 10.465990, -19.000000) at (255, 256) --> at unproject (9.672081, 10.465990, -19.000000) 画面の幅が縦横256なのに、こんな小さな差しか出てきません。 これだとスクリーンは左端〜右端までワールド座標中で約-0.5〜0.5の差でしかないということでしょうか gluPerspective(45.0, (double)w / (double)h, 1.0, 1000.0);はこのようにしております。 スクリーンの点から空間の点を知る方法を教えてください
153 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:54:22 ] スクリーン上の点を空間で表すと直線になるけどな。
154 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:06:50 ] すみません。仰ってることがわからないです 上のことは、私の勘違いだったかもしれません 画角を90度にして、画面も正方形で作ってみました そうすると距離が1離れているスクリーンは 左端が-1 右端が+1になりますねよね。 それで正しい値だと認識できました。
155 名前:デフォルトの名無しさん [2007/06/17(日) 17:02:30 ] >>152 とりあえず gluUnProject(i, j, 0, model, proj, view, &x1, &y1, &z1); ↓ gluUnProject(i, j, z1, model, proj, view, &x1, &y1, &z1); じゃねぇかね?
156 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:41:26 ] ワールド座標中でのスクリーンが欲しいときは0にすると以前教えていただきまして z1だとこの場合スクリーンより奥の値になりますよね? ここまでやって、スクリーンに向かって光線を打てると思ったのですが詰まりました…はぁ…
157 名前:デフォルトの名無しさん [2007/06/17(日) 19:42:18 ] >>156 >ワールド座標中でのスクリーンが欲しいときは0にすると以前教えていただきまして はっきりいって間違ってるよ
158 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:43:06 ] >>152 >これだとスクリーンは左端〜右端までワールド座標中で約-0.5〜0.5の差でしかないということでしょうか そーゆーコトです。(gluPerspectiveに与えたwとhの比にもよりますが) >gluPerspective(45.0, (double)w / (double)h, 1.0, 1000.0);はこのようにしております。 とのことなので、これはglFrustumでいえば const double t = tan(22.5 / 180 * M_PI); glFrustum( -1.0 * t * w / h, 1.0 * t * w / h, -1.0 * t, 1.0 * t, 1.0 1000.0 ); に相当しますから、nearクリック面の横幅はw/h*2tan22.5度、となります。 >スクリーンの点から空間の点を知る方法を教えてください 求められているように思えますが・・・。
159 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:54:32 ] 多分152さんは、前スレの915〜あたりの人ですよね。 もしいまだにnearクリップ面のことを「スクリーン」と呼んでるのなら、早く直した方がいいですよ。 独自の用語を使われると、意志の疎通以前に混乱を招きますので。 >>157 字面だけみると完全に間違ってる(笑)んですけど、 その辺の事情は前スレを見ないと分からないかと・・・。
160 名前:140 [2007/06/17(日) 20:18:51 ] ライセンススレ化してすんません。原文読んできました。 スタリンクするものはLGPLの派生物となるが、例外として、 リバエン/改変などの告知をし、完全かつ機械読み取り可能なオブジェクトコードあるいはソースコー ド(どちらかでも可) と一緒にする。 この「オブジェクトコード」がglui.libを指すのであれば大丈夫ですな
161 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 20:37:56 ] >>159 さん その節はありがとうございました。 一度他のことで時間を割かれてしまって、もう一度着手しているところです。 ご指摘もありがとうございます。手探りでやっている状態で、、、 上記の方法で、視点位置と、nearクリップ面とを結ぶ直線(レイ)を出そうとして レイを単位ベクトルにしていざ使おうと思ったのですが 今度はそれと、立方体の面との交点の算出に苦戦しています。 ここはOPEN-GLじゃない、数学のレベルの問題なので、どうにかして頑張ります。 今日は帰れそうになさそうです(´;ω;`)
162 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:00:36 ] >>160 >この「オブジェクトコード」がglui.libを指すのであれば大丈夫ですな 違う、アプリケーションを構成する.oファイル全てなので、 公開しないコードの部分も.oは公開しないといけない。 つまり、コードは無くても良いけどLGPLの部分が置き換え可能な状態で無ければいけない。
163 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:28:27 ] >>161 交差判定は面倒ですね〜。 こことか参考になるかもですよ。 ttp://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%B8%F2%BA%B9%C8%BD%C4%EA_3DCG 日曜なのに大変そうですね。 がんばれ〜。・ω・`)ノシ
164 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:30:40 ] >>162 が正解 LGPL 部分を自分で改変したバイナリで置き換えられる様に、.o を入手可能にする 必要がある。派生物の所持者が入手可能であれば良いから、世界に向けて公開する 必要は無いよ。
165 名前:140 [2007/06/17(日) 22:45:24 ] >>162 ,164 両氏ともありがとうございました。 オブジェクトコード=.oだったんですね(;゚Д゚) なるほど、派生物所持者が再びリンクできるようにってことですね。 >世界に向けて公開する 必要は無い バイナリといえど、ちょっと抵抗があったので安心しました。 重ね重ね感謝ですヽ(´▽`)/
166 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 20:36:52 ] >>163 どうにか無事にレイと面の交差判定、できました! あとはそれの効率化で頑張ります。 本当にありがとうございました!
167 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 08:15:38 ] c++でもextern"C"で頑張って、 dllやらsoを使うのが簡単な気がする。
168 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 04:46:17 ] 光源の明るさを0にして描画しても真っ暗になりません。 具合的には、 GLfloat lightAmb[4] = {0.0f, 0.0f, 0.0f, 0.0f}; GLfloat lightDif[4] = {0.0f, 0.0f, 0.0f, 0.0f}; GLfloat lightSpe[4] = {0.0f, 0.0f, 0.0f, 0.0f}; glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDif); glLightfv(GL_LIGHT0, GL_SPECULAR, lightSpe); GLfloat mateAmb[4] = {1.0f, 1.0f, 1.0f, 0.0f}; GLfloat mateDif[4] = {0.0f, 0.0f, 0.0f, 0.0f}; GLfloat mateSpe[4] = {0.0f, 0.0f, 0.0f, 0.0f}; glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mateAmb); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mateDif); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mateSpe); にして描画すると、薄暗く (RGB=0.1, 0.1, 0.1 ぐらいの暗さ) 描画されてしまいます。 原因がわかる人おりますでしょうか? 環境は、GeForce 7900 GS です。
169 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 10:16:44 ] GL_LIGHT_MODEL_AMBIENT
170 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 11:42:49 ] >>169 ありがとうございます。原因わかりました。 デフォルトで環境光 0.2 が加わるなんて、知りませんでした。
171 名前:yd [2007/06/25(月) 19:05:50 ] だれかいますか?
172 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:09:03 ] (@u@ .:;)ノシ
173 名前:yd [2007/06/25(月) 19:20:10 ] こんち
174 名前:yd [2007/06/25(月) 19:21:49 ] (x, y) = (0 + 0.557 * cos( 90 ), 0 + 0.557 * sin(90)); をFor文で回したいんですけどうまく逝きません;;
175 名前:yd [2007/06/25(月) 19:31:25 ] 円上にポイントを64個、均等に置きたいんですm(__)m
176 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:13:16 ] これはひどいマルチ
177 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:16:28 ] >>175 int i; float a; const float b = 3.1415926535897932384626433832795028*2/64; glBegin(GL_POINTS); for(i = a = 0; i < 64; i++, a += b) glVertex2f(cosf(a), sinf(a)); glEnd();
178 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:55:22 ] 足し算は駄目だろ…
179 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:13:33 ] >>178 はあ?
180 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:31:45 ] >>179 誤差が蓄積するからって言う意味だろ。
181 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:45:55 ] >>180 でも差は、6.283185-6.283182=0.000003だけどな。
182 名前:yd [2007/06/26(火) 04:01:08 ] ありがとうございます。早速試してみますm(__)m
183 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 04:04:36 ] どういたしまして
184 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:20:17 ] フィールドシーケンシャル 3DをOpenGLで実装したいのですが、 方法はさておき、左右の画像を1/2に間引きして交互に合成すれば いいのでしょうか。こんな感じに 右右右右右右右右右右右右右右 左左左左左左左左左左左左左左 右右右右右右右右右右右右右右 (繰り返し) 左左左左左左左左左左左左左左 資料があまりないので確証がとれません。どこかにありませんか。 英語サイト可です。
185 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:51:01 ] 立体視の話?
186 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:58:43 ] そうです。 例えば、 640x480右画像 640x480左画像 ↓ 奇数行は右画像から 偶数行は左画像から ↓ 640x480の(裸眼では見るに堪えない)画像 でいいのでしょうか。それをOpenGLでやりたいんですが。もちろん動画です。
187 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 01:28:29 ] あなたがお使いのフィールドシーケンシャル方式のデバイスの 仕様に沿った形で画像データを渡せばよろしいかと思います。
188 名前:yd [2007/06/27(水) 12:11:18 ] 円周上にうたれた点に対して、1個飛ばしに円弧で結んでいきたいんですが 直線ニナら結べるんですけど、円弧だとどうアプローチしていいかわかりません やさしい人教えてください。
189 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 21:25:16 ] ニナがキモイ
190 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 21:44:06 ] 円周上の点を円弧で結んだら1個飛ばしとか関係なく全部の点通るんじゃね? それはともかくOpenGLでやるなら細かい直線に分けて書く それも面倒ならgluPartialDisk ニナって誰?
191 名前:Light [2007/06/27(水) 22:26:40 ] 脳の視覚システムを研究している者です。 リンク先のような画像をOpenGLで作製したいのですが、うまくいきません。 en.wikipedia.org/wiki/Image:Monocular_rivalry.png いまのアルゴリズムは、赤線を描いた後、緑線を描いているんですが、 それだと上描きしてしまうことになるので、リンク先の画像のように、 重なった部分が混ざり合ってぼけた感じになりません。 また、赤と緑を別々に描くと、僕のiMacだと後の方に描いた線が バチバチします。計算量が無駄に多くなってしまっているのかもしれません。 何か良い解決方法はないでしょうか? 閃いた方、ぜひぜひご教授ください。
192 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:22:00 ] 混ぜるのは色のアルファを指定してBlendしてくれ ブレンドについてはGL_BLENDとかglBlendFuncで調べれば出てくるはず パチパチというのはよく分からないがZ比較してるんでないかい? glEnable(GL_DEPTH_TEST)をやってたらglDisableにしてみれ あとこのレベルの質問はくだすれOpenGLスレに書いた方が適切と思われる
193 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:35:22 ] 同業界人かよ パチパチはvsyncに同期してないか、 ダブルバッファリング関係かどちらかかと思われる
194 名前:Light [2007/06/28(木) 23:39:57 ] >>192 & 193の方へ 回答、ありがとうございます。 GL_BLENDは可にしていたんですが、glBlendFuncのパラメーターが良くなかった ようです。glBlendFunc( GL_SRC_ALPHA, GL_ONE );でうまく色を融合できました。 バチバチは、glutIdleFunc( idle ); を入れると起こってしまいます。 ただし、idle関数の中身は、glutPostRedisplay();です。 glutSwapBuffers()を使っています。 もう少し自分でやってみて、また判らなければ「くだすれOpenGLスレ」に 投稿したいと思います。
195 名前:デフォルトの名無しさん [2007/07/03(火) 02:15:15 ] 手抜きOpenGlにあるサンプルが起動しません。 どうしたらいいのですか?
196 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 02:44:55 ] >>195 どういうふうに起動しないのよ? 環境わからんからなんとも言えんけど、GLUTは適切にインストールされてる?
197 名前:デフォルトの名無しさん [2007/07/03(火) 08:25:16 ] 【派遣ネガティブ根性チェック】 3つ以上、チェックがつけばアナタの性格はひん曲がっており、 ネガティブ負け組派遣人生を歩んでいます。 □派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う □派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする □昼食は必ず派遣先の社員と行くべきだ □自分の仕事で問題が発生しても解決するのは自分の仕事ではない □派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい □自社で仕事なんてできるわけがない □派遣労働の問題点の話題が出ると感情剥き出しにして反論する □派遣労働の問題を指摘する人は嫌いだ □派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい □奢ってくれる派遣先正社員を尊敬する □自分の月額金額を知らないのは当然だ、単金を聞いてはいけない □派遣先正社員より自分の生涯収入が低いのは当然だ □チビは派遣先にかわいがってもらいやすから派遣には有利だ
198 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 12:33:07 ] プログラマー板でやれ
199 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 12:56:45 ] >>198 文句があるなら派遣を辞めてから言え
200 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 15:51:08 ] HaskellでOpenGL使ってる人いる?
201 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 18:44:55 ] いらない
202 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 18:56:57 ] 俺もいらね
203 名前:デフォルトの名無しさん [2007/07/03(火) 21:35:56 ] OpenGLなんて単独で使うもんだ 余計なもんなぞ糞
204 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:55:12 ] 何がいらないのかまったくわからないのですが
205 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 19:12:14 ] そうですか
206 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 19:48:52 ] >200-202の流れにはワラタけど >203は全く意味がワカランなぁ・・・ OpenGL単独で一体何ができるってんだか。肝心の絵すら出ないよw
207 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:07:38 ] OpenGLが自我をもって動き出す 行く先も分からぬまま
208 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:40:07 ] 行く先と言えばLongsPeakって出るの今月だっけ? ほんとに出るのかな…
209 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:58:55 ] >>206 ヒント 描画ロジックの分離
210 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:35:51 ] >>209 …描画ロジックを分離するとOpenGL単独でいけるんだ。 …へェ。
211 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:53:16 ] 俺もOpenGL単独で使いたい! 極意を教えてください!!
212 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:00:40 ] メンテナンス性を考慮してできるだけOpenGL単独になるように設計するだろ、普通
213 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:20:20 ] >>200 Haskellみたいな純粋に近い関数型言語ってよく知らないんだけどさ、 OpenGLみたいなStateMachineとの相性って悪くないの? あれかな、モナドとかいうやつを使ってむにゃむにゃするのかな?
214 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:09:52 ] >>212 言語との組み合わせでどう?といわれているのに 単独とかわけの分からないこと言ってるから突っ込まれてるんだろ
215 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 01:05:16 ] >>214 エスパー乙
216 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 01:20:37 ] >>204 HaskellでOpenGL使ってる人
217 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:10:34 ] ウィンドウとレンダリングコンテキストとフレームバッファがひとつに くっついているのって扱いにくくないですか? スレッドにカレントコンテキストを設定するのもグローバル変数のようで プログラムが複雑になるような気がします。
218 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:40:14 ] OpenGLのせいではありません。M$に文句言ってください。
219 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 01:23:50 ] D3Dはそのへんちゃんと作ってるのがムカつくなw
220 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:19:22 ] そうか? D3DでもDeviceは一個しか作れんし、結局グローバル変数にしちゃわない? デバイスを使用する関数にいちいち渡してたらそっちの方が複雑になるな あとは次バージョンのOpenGLにご期待ください
221 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:41:58 ] >D3DでもDeviceは一個しか作れんし 二個以上作れるしデバイスのAPIが複数スレッドからの 呼び出し可能にするオプションもあるんだなこれが。 ゲームはともかくツールとか作る時には未だにwgl*の適切な取り扱いがよーわからん。
222 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:55:33 ] そうなのか、昔やった時は1個しか作れなかったからそういう物だと思ってた 確かにツールとか複数ウィンドウに描画する場合はコンテキストの管理が面倒だな 設定は独自管理にしてコンテキスト切り替え時に必ず設定するようにするのがいいのかな しかしマルチコンテキストの場合は何が共有できるのか分かりづらいのが困る… これが嫌でpbuffer諦めてFBOにしたしな
223 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 11:40:57 ] 内部で OpenGL を使うライブラリを作成するときに,ユーザーが 別に OpenGL を使っている可能性があるからライブラリの関数を 呼び出すごとにコンテキストの退避,切り替え,復元をしなけれ ばならないから非効率
224 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 20:53:03 ] それはそのライブラリの仕様が悪いだけのような…
225 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 01:50:28 ] ライブラリの作り方をずっと考えてきたがうまいやり方が思いつかなかった。 OpenGL をライブラリ内部に隠蔽してユーザと同じスレッドで動かすライブラリ の場合,ユーザが設定するコンテキストの影響を受けてもいけないし影響を 与えてもいけない。 結局ライブラリの関数に入ったときにこっそりコンテキストを切り替えて 関数から出るときに元のコンテキストに戻す方法しか思いつかなかった。
226 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:32:06 ] OpenGL 3.0 は D3D10 とほぼ同じ API にしてくれないかな。 そのほうが学習も楽だし,GPU ベンダーも楽になるのに。
227 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 17:17:03 ] それはない。何か(考えが)浅いな。
228 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 17:24:16 ] Fahrenheitというのがあってな…。
229 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 17:32:03 ] >226 今後はしばらくAPIの策定がD3D先行なのは間違いないから インターフェイスはともかく出来ることはほぼ同じになるだろうね 少なくともD3Dで出来ることはGLでも出来るようになる(速度は知らんが
230 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 20:57:40 ] なってくれないと困る
231 名前:デフォルトの名無しさん [2007/07/19(木) 23:25:16 ] OpenGL初心者の者です.言語はjavaを使っています. 修士研究で使用していますが,周りに使っている人がいないので聞けない状況 です. 解析で出た速度ベクトルを,glutSolidConeで描画したいと思っています. 流体なので,複数のベクトルがあり,陰影がついていないと見づらいのです. for文で描画しようと思っています. 問題があり,glutSolidConeは,デフォルトでZ軸方向を向くようになっています. これを回転させて,求めたベクトルの方向に向かせたいのですが,分かりません. Z軸をこの方向に向かせたとして,他の2軸の向きがどうなろうと かまわないのですが,Z軸に向かせるだけなのにできません. 調べたところクォータニオンというものがあり,便利ということですが, あまり資料がありません.また,CGが研究の主題なのではなく, 描画自体はシンプルなものなので,ここまでやらなくてはいけないのか 悩んでいます. 良い方法があったらよろしくお願いしま
232 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 23:35:07 ] >>231 回転行列の3列目に向かせたい方向のベクトル入れたらええんちゃうのん? 残りの2列は直交するように適当に
233 名前:デフォルトの名無しさん [2007/07/19(木) 23:42:29 ] それは,glRotatefを使用しない方法でしょうか? 詳しくないものですいません.
234 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 23:45:39 ] >231 四元数でもいいけど、glMultMatrix()使うのが分かりやすいかと。 Z軸が (x, y, z) の方向を向いて欲しいなら、 GLfloat m[16]={x0,x1,x2,0, y0,y1,y2,0, x,y,z,0, 0,0,0,1}; glMultMatrixf(m); (glutSolidCone...) て感じ。Cしか知らないので自分で適当にJavaに翻訳してね。 あ、事前に(x0,x1,x2)と(y0,y1,y2)と(x,y,z)は互いに直交するように かつ正規化されているように設定する必要がありますヨ。
235 名前:デフォルトの名無しさん [2007/07/20(金) 00:04:27 ] ありがとうございます. 調べてやってみたいと思います. >234 あ、事前に(x0,x1,x2)と(y0,y1,y2)と(x,y,z)は互いに直交するように かつ正規化されているように設定する必要がありますヨ。 の部分がはっきりしないのですが, (x0,x1,x2)と(y0,y1,y2)はどういったベクトルなのでしょうか? ・向かせたい方向(x,y,z) ・直行するベクトル→(x0,x1,x2)と(y0,y1,y2)は (x0,y0,z0),(x1,y1,z1)と解釈 でよろしいでしょうか? かつ,(x,y,z),(x0,y0,z0),(x1,y1,z1)はそれぞれ正規化されたベクトル ただし,今回は(x0,y0,z0),(x1,y1,z1)は適当に与えればよい. でよろしいでしょうか?
236 名前:デフォルトの名無しさん [2007/07/20(金) 00:13:51 ] >234 教えていただいたことで分からない点がもう一つありました. 仕様が違うのかもしれませんが… 「glMultMatrixf(float[],int)は(float)に適用できません」と出てしまいました. 引数で,int型のある数が必要らしいのですが,知っていれば教えていただけませんか?
237 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 01:10:16 ] >235 座標変換前のx軸とy軸が座標変換後に向く方向、って意味で(x0,x1,x2),(y0,y1,y2)って 名前にしましたけど、かえって分かりづらかったですか。w まぁ、名前なんて(x0,x1,x2)だろうが(x0,y0,z0)だろうがどうでもいいんで気にしない方向で。 要は、座標変換後もxyz軸が直交して欲しいなら三つのベクトルを直交させないといけないし、 また座標変換後のxyz軸の大きさが変わらないで欲しいなら三つのベクトルが正規化されてないと いけないわけです。GLと関係無い、数学の話ですね。 glMultMatrixf()の二番目の引数ってなんだろ。Cにはそんなの無いんですが。 てかAPIのリファレンスとかwebで調べれば良いだけの話では。
238 名前:デフォルトの名無しさん [2007/07/20(金) 01:25:37 ] >237 分かりました,ありがとうございます. 3次元の座標変換というものに慣れていないので,質問しました. 調べてみればみるほど,数学の話になるので仰るとおり理解するには 数学的にしっかり理解しなければいけないようです. APIの方も見ようと思います. ありがとうございました.
239 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:00:04 ] >238 改めて考えてみたら、glMultMatrixを使うのは無駄多いかも。 要するにz軸(0,0,1)を任意の方向(x,y,z)に向けられればいいわけだから・・・ Vz=(0,0,1)→V=(x,y,z) 回転軸Vr(rx,ry,rz)は Vr = Vz x V (外積) 回転角度aは a = arccos(Vz・V) (・は内積、Vは単位ベクトルとする) このVrとaが、そのままglRotateの引数に使える、の、かな。 Vz = (0,0,1)を入れて具体的に計算すると、 Vr = (-y, x, 0) a = arccos(z) これを、速度ベクトル一個ずつに対応して保存しておけば、 描画するときにglRotate(a, Vr.x, Vr.y, Vr.z)でいけるはず。 ただしGLの角度表現はradじゃなく度なので注意。 あとV(x,y,z)がz軸に平行なときは計算が別になるけど、ま、それは分かるでしょ。
240 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 22:22:24 ] >236 2 番目の引数は配列のオフセット。 C → glMultMatrixf( m + 10 ); Java → gl.glMultMatrix( m, 10 );
241 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 00:03:45 ] >>239 直接基底作ってglMultMatrixのほうが明らかに計算量が少ないと思うが・・・
242 名前:デフォルトの名無しさん [2007/07/21(土) 01:25:26 ] 昨日質問した者です. >239 なるほど,そういう方法もあるんですね.glRotateの引数には,1.0fか0.0fを 入れる方法しか知りませんでした(汗) >240 オフセットですか.APIを見ても???という感じでしたが,オフセットで調べたいと 思います. みなさんありがとうございます.諦めかけていましたが,なんとかなりそうです.
243 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 02:48:34 ] >>241 >glMultMatrixのほうが明らかに計算量が少ない そうでもない。 ・パラメータの転送量が多い ・(OpenGL内部での)逆行列計算が大変 てことで、glMultMatrixは負荷が大きいよ。 対してglTranslate,glScale,glRotateは逆行列の計算が速い。 ま、自分ではベンチとって比べてみたことは無いけど。一般的には、 MultMatrixを使うよりはTranslate/Scale/Rotateを使うべきと言われてるね。 それに事前の計算量もメモリ消費量も、このケースでは 234の方法 > 239の方法 だと思うけど・・・。
244 名前:薄汚い派遣の国、日本 [2007/07/22(日) 17:53:13 ] 最近、職場で「出戻り寄生派遣」という言葉が囁かれています。 派遣契約を切られたにもかかわらず「次の派遣先でも切られてしまって生活できません」 などと 言って泣き落としで現場責任者に一切話がないまま再契約した派遣のことです。 今月初め、半年前に切った派遣が出社してきてマネージャーも含めみんなびっくりしました。 影でコソコソ偉い人に泣きついて再契約したそうです。同じ部署の人には黙って・・・ そんなことまでして自宅の近くの派遣先にこだわって人間として恥ずかしくないのですか。 派遣でスキルアップ、派遣で収入アップとか言うなら一箇所にしがみつかず 複数の会社を渡り歩いてください。 ひとつの会社で派遣向けの単調な仕事をしていたらスキルアップなんてありえないでしょう。 身分不相応な商品のローンを払うために派遣だと当然足りない収入は親にも寄生して、 いつ切られるんじゃないかとビクビクしながら人事権のある人間とだけ仲良くし、 契約終了を通知されれば泣き落とし。悲惨な人生ですね。 氏んだほうがいいんじゃないですか。
245 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 14:28:32 ] XPだとうまく動いてたプログラムが Vista だと glBindTexture での テクスチャの切り替えがうまくいかねぇ・・・・ ググっても同様の症状は出ないので自分のコードのどこかが 行儀悪いんだろうが何がいけないのやらさっぱり・・・ orz
246 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 20:39:33 ] とりあえずOpenGL-D3D Translatorで動かしてみたら?
247 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:59:46 ] 【派遣ネガティブ根性チェック】 3つ以上、チェックがつけばアナタの性格はひん曲がっており、 ネガティブ負け組派遣人生を歩んでいます。 □派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う □派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする □仕様とは正社員から口伝されるものだ □耳で聞いた仕様を正確に覚えていないのは自分の責任だ □昼食は必ず派遣先の社員と行くべきだ □自分の仕事で問題が発生しても解決するのは派遣の仕事ではない □自社で仕事なんてできるわけがない □派遣労働の問題点の話題が出ると感情剥き出しにして反論する □派遣労働の問題を指摘する人は嫌いだ □派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい □奢ってくれる派遣先正社員を尊敬する □自分の月額金額を知らないのは当然だ、単金を聞いてはいけない □派遣先正社員より自分の生涯収入が低いのは当然だ □チビは派遣先にかわいがってもらいやすいから派遣には有利だ
248 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 00:05:24 ] >>246 ども。試してみます。
249 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 09:52:21 ] >>245 ここにVistaでOpenGLを使う時の注意点があるけどどうだろう www.opengl.org/pipeline/article/vol003_7/ Aeroを使ってたら切って試してみるといいかもしんない
250 名前:デフォルトの名無しさん(245) mailto:sage [2007/07/27(金) 10:40:19 ] 245ですが原因わかりました。-_-;.. glBindTexture でテクスチャを切り替える時に、XPだと、 glBindTexture( GL_TEXTURE_2D, テクスチャ1 ); /* テクスチャ1有効 */ glBindTexture( GL_TEXTURE_2D, テクスチャ2 ); /* テクスチャ2有効 */ とダイレクトにバインドして問題ないんだけど、 Vista の場合、 glBindTexture( GL_TEXTURE_2D, テクスチャ1 ); /* テクスチャ1有効 */ glBindTexture( GL_TEXTURE_2D, 0 ); glBindTexture( GL_TEXTURE_2D, テクスチャ2 ); /* テクスチャ2有効 */ glBindTexture( GL_TEXTURE_2D, 0 ); と、名無しテクスチャに戻してやらないと他のテクスチャにバインドし直せなかったです。 うーん・・・ 赤本(原書第5版)の glBindTexture のサンプルコードは上の書き方だったけど この辺何か文献でてましたっけ。 勉強が足らんなぁ・・・ >> 249 サンクス!! OpenGL描画中にGDIはいじってないので大丈夫そうです。 自分の元のコードが Aero の On/Off に関わらず発症すること、 上記の修正をして Aero の On/Off に関わらず修正されたことを確認しました。 以上、お騒がせしてすんませんでした・・・・ orz
251 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:06:45 ] >>250 BindTextureに0を指定することって普通無いと思うが、不思議な現象だな まだVista用のグラフィックドライバがバグってるってだけかもしんないね
252 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 16:03:10 ] おいらンとこではBindTextureで0をバインドしなくてもVistaで普通に動いてるよ。 てか今まで特に不具合は出てないな。
253 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 16:32:41 ] >>250 定番だけどドライバを更新。もうやってそうだけど。 >>251 無名のテクスチャを指定するときに0を指定するんじゃなかったかな。
254 名前:デフォルトの名無しさん [2007/07/27(金) 18:17:26 ] Vista標準のドライバを使っているといったら、なぐる
255 名前:デフォルトの名無しさん(245) mailto:sage [2007/07/29(日) 08:31:17 ] >>254 とはいえ、標準ドライバでも最低限まともに動くようになってないとね・・ なんせ「標準」ですからね・・ >>252 ですよねぇ。自分のOpenGL作法がおかしいんだろうなぁとは思うんですが、 テクスチャ以外は問題ないし、毎回 gllTexImage2D() する分にも問題ない。 glBindTexture だけが思うように動かない。謎です。 みなさんどもありがとです。m(_ _)m
256 名前:名無しさん@そうだ選挙に行こう [2007/07/29(日) 13:16:20 ] うちのプロジェクトでは、Vista添付のドライバでOpenGL動かしたら、 WindowsXPのベンダー提供ドライバ時の約6%しか、速度がでなかった。 Vista対応ドライバを入れると、解決した。 よって、Vistaの添付ドライバは全く信用していない
257 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 13:37:48 ] 遅いのはD3Dへのtranslatorだからってだけの話 信用云々とかあふぉくさ
258 名前:デフォルトの名無しさん [2007/07/30(月) 01:13:23 ] 全然詳しくないので質問させてください。 いつも仕事中にWebばかり見てる派遣クンが 「OpenGLがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」 と言っています。 彼のOpenGLプログラムが動かないのを調べるのは誰の仕事なのでしょうか?
259 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:15:03 ] まともに論破する技量も無いお前の仕事
260 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:18:15 ] こういうバカを論破しようとチャレンジするなんて尊敬するよ 俺なら論破以前に派遣契約を切るからな
261 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:23:48 ] それスクリプト
262 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:32:37 ] >>259-260 論破しようにもそういう奴って話通じないだろ 「僕は言われた通りにやりました!何で僕が調べないといけないんですか!」 なんて言われたひにゃ俺ならマジギレしそう
263 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:50:00 ] >>262 話通じない奴が居るって時点でお前も話通じなそうだな
264 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:57:43 ] >>263 日本語をしゃべってれば話が通じるなんて考えは甘いよ。
265 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 02:04:33 ] >>263 お前ずいぶん恵まれた環境で仕事してるんだな
266 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 03:06:58 ] マ板池
267 名前:デフォルトの名無しさん [2007/07/30(月) 05:45:57 ] >>258 は、マルチ
268 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 07:02:50 ] 契約内容見直せよ。
269 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 09:20:10 ] 258はDirectXスレでも単語が変わっただけの同じのみたな
270 名前:デフォルトの名無しさん [2007/08/04(土) 19:23:43 ] MacでOpenGLやりたいんだけどXcodeでプログラミングすれば平気?
271 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:28:32 ] >>270 XCode 使っても良いけど、↓これ見ておけば悩み無用。 ttp://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
272 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:02:22 ] CocoaでやんのかCarbonでやんのか知らんがまぁがんばれ
273 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 23:56:10 ] 今日から始めたんだが解説サイトとかすごく少なくて不安… 日本語で基礎からガッチリ固めたかったらあの高い赤本しかないの? せめて5000円以下でないだろうか
274 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 00:13:13 ] >>258 人材配置を見直してもらうか、仕事振ってるマネージャーを変えてもらえ
275 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 11:39:09 ] >>273 学生なら学校の図書館とか、あるいは市町村の図書館でもあたってみては。 無いかもしれんが。 英語でよければ古い版の赤本を無料で読める www.glprogramming.com/red/
276 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 16:11:22 ] やはり英語か… 覚悟きめてがんばるわ
277 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 20:52:07 ] 古い赤本はほんとうに古いから参考になるかどうか… 図書館は無ければリクエストしてみるといいかも でも入るまでかなり時間かかるかな
278 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:04:40 ] 日本語の赤本もようやっと原著第5版になってるしね。 英語で格闘する労力と13k円の出費のトレードオフを考えてオレは買った。>赤本
279 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:09:00 ] 昔の赤本(初版)はもってるんだけど、最近のとどこが違うのでしょうか?
280 名前:デフォルトの名無しさん [2007/08/06(月) 21:10:38 ] 図書館てOpenGLみたいなマニアな(?)専門書って置いてるものなの?
281 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:12:54 ] 比較的メジャーなマニア本だからな。
282 名前:デフォルトの名無しさん [2007/08/06(月) 22:42:51 ] >>279 Amazon.co.jp: OpenGLプログラミングガイド 原著第5版: 本: OpenGL策定委員会,松田 晃一 www.amazon.co.jp/dp/4894717239 > ■OpenGL バージョン1.5 で追加された以下の新しいコア機能:頂点配列のバッ > ファオブジェクトへの格納/遮蔽問い合わせ/シャドウマッピング用のテクス > チャ比較関数の追加/トークンの更新 > > ■OpenGL バージョン2.0 で追加された以下の新しいコア機能:シェーダ記述言 > 語の追加/プログラマブルシェーダからの複数のカラーバッファへの異なる色の > 出力/テクスチャマップに関する2 のべき乗のサイズ制限の緩和/テクスチャ > マップされた点スプライトのレンダリング/前面と背面ポリゴンでのステンシル > 処理の分離 > > ■バグ修正 だそうです。 OpenGL1.5とOpenGL2.0についての追加と、訳の見直しが行われている模様。 俺もほしい
283 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:10:14 ] 第2版までは翻訳業者が訳してたから読みにくかったね
284 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:29:29 ] >>279 ・より赤くなった ・1,000円高くなった
285 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 00:20:48 ] 不覚にも笑ってしまった しかしせめて8000円ぐらいに…
286 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:27:06 ] >>284 1.5倍くらいは速くなってんのかな
287 名前:デフォルトの名無しさん [2007/08/07(火) 02:39:49 ] > 原著第5版 テクスチャへの描画とか、実際に使う際の普遍的なチップスとかって 載ってますのん? そういうのは、Game Programming Gems買えって事かな? (そろえたら、赤本よりたけええけどよぉおぉ)
288 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:52:53 ] Gems にそんなの載ってたっけ
289 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:18:43 ] >>287 テクスチャへのレンダリングにはGL_EXT_framebuffer_objectを使う。 この拡張機能はOpenGL 2.0の仕様に含まれていないから当然赤本には載ってない。
290 名前:デフォルトの名無しさん [2007/08/07(火) 22:16:01 ] ああ、使用に含まれてない=載ってないか・・・ そうだよなあ
291 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:51:14 ] 赤本は昔からextensionには触れないからね
292 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 18:58:10 ] The OpenGL ARB officially announced OpenGL 3 www.opengl.org/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic;f=3;t=015351;p=0
293 名前:デフォルトの名無しさん [2007/08/19(日) 23:15:27 ] よしはる別スレに今も登場中
294 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 23:26:55 ] スレ違い、こっちでやれ↓ OpenGL 2.0 専用スレ pc11.2ch.net/test/read.cgi/tech/1126268759
295 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 18:42:39 ] カーマック大失敗w ttp://www.technobahn.com/cgi-bin/news/read2?f=200708231640&page=2
296 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 18:48:33 ] wwwwwwwwwwww
297 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 05:32:42 ] ざまぁwww
298 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 19:51:37 ] すみません。 OpenGLでなくGLSLでVertex texture fetchをしたいのですが、 テクスチャを取ってくるときの関数はフラグメントシェーダと同じように、 texture2Dやtexture2DRectを使うのでしょうか?
299 名前:デフォルトの名無しさん [2007/08/24(金) 21:08:31 ] >>298 確かそうだったと思う。
300 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 01:18:20 ] GeForce8600GTにしてからたまに描画が異様に遅くなるんですが、似たような症状に遭って解決できた方いませんか? VBOにデータ置いても直らず、シェーダやテクスチャはおろか、ライティングすらしてないモデルでも再現。 WindowsXPで、ドライバは最新(162.18)とベータ版(163.44)両方で発症。 GeForce6000系や7000系では問題は起きませんでした。 プログラムを何度も起動しなおしたら上手くいくこともあるのですが…。
301 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 01:38:33 ] >>300 熱暴走してないか疑え
302 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:53:14 ] 盲点でした、が、マシン起動直後でも起きるので、単純に熱だけが原因ではなさそうです。 あとDirectXのゲームとかでは同様の問題は起きず。 # もう検証疲れた…。ドライバが腐ってるせいってことにしたいorz
303 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:58:46 ] VBOに書き込む際のバッファオーバーランとか
304 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:09:36 ] glInterleavedArray()/glVertexPointer()系 + VBO使用/未使用の組み合わせ、 glBegin()〜glEnd()、の5パターンで同じモデルを描いてみましたが、全てで発症しました。 モデルは立方体を1000個程描いてるだけです。
305 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:12:00 ] とりあえずプログラムうp
306 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:15:40 ] >>305 ちょっと公開したくない部分があるんで、 問題が起きる最小限のプログラム用意してみます。
307 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:21:12 ] お、えらい。 大抵公開できない部分があるのでそこを何とかお願いしますとかが多いのに。
308 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 01:40:12 ] a-draw.com/contents/uploader2/src/up0377.zip.html DLKey: 0000 急拵えなんでバグってたらすみません。 グラフの単位はミリ秒で、上限20msです。 good.jpgは正常時、bad.jpgが異常に遅いときのスクリーンショットです。 これ作りながら検証したところ、どうも全体的な負荷が高い時程発症確率が上がってる感じがします。 立方体1000個にしてシェーダ使うと9割以上発症したり。 しかし500個シェーダ無しでも稀に遅くなったりで、根本的な対処法は依然分からず。
309 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 02:23:56 ] >>308 解凍できないのは俺だけか?
310 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 03:34:28 ] >>309 とりあえず解凍はできたぞ。
311 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 11:02:23 ] >>309 安心しろ俺もだ
312 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 11:40:18 ] unzip.dllが古いんじゃね
313 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 12:07:05 ] WindowsXP標準の圧縮フォルダで展開できるZIP形式でお願いします。
314 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 17:17:02 ] そのぐらいじぶんでやれよ
315 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 19:33:23 ] >>308 解凍できません
316 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 20:33:59 ] そのままで自動ダウソすると失敗するぽいお リンク押してダウソしたら解凍できるんでないか
317 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 20:47:07 ] unzip コマンドで普通に展開できたよ
318 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 21:25:44 ] >>308 うちのgeforce8800gtxでもbad.jpgと同じぐらいのスピードになった。 GLexpertから何もメッセージがでてない(標準出力は起動時につくられるstdout.txtに出力されるんだよね?) っぽいし、ソースコードをざっと読んだけど原因はよくわからなかった。 そういえば、geforce6000, 7000で毎framePBOにデータを送るようなプログラムを書いていたときに 数秒後に急に倍近くfpsが上がることがあった。 ドライバが消費電力を低くするために裏で負荷に合わせて使用するシェーダの数を調整したりしてるのか? 教えてエロ詳しい人
319 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 21:39:21 ] 上のに関連するが、Vista+GeForce8000だとむちゃくちゃ遅くならない? うちだと>>308 のbad.jpgより遅くなってる。 ttp://d.hatena.ne.jp/yaneurao/20061122 これとか見ると少なくとも7000だと問題ないみたいだが。 8000はまだOpenGLの実装が不完全と見た方がいいのかね。
320 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 11:21:10 ] Vista yaneurao
321 名前:デフォルトの名無しさん [2007/09/01(土) 13:24:30 ] >>308 ずっとこんな感じで推移。 gamdev.org/up/img/10058.jpg たまにぐっと負荷がかかるようだが、見た目はスムーズ たぶん常駐が多いせいだと思う 環境は、 CPU: Pen4 2.6GHz メモリ: 1.5GMB GPU: Sapphire RADEON X700 今時だと、さすがにプア環境でアレだが しかし、きれいやねー参考にさせていただこう
322 名前:デフォルトの名無しさん [2007/09/01(土) 13:27:04 ] メンゴ書き忘れ OS: Windows XP SP2 32bit GPU DRIVER: ATI ver 8.342.0.0
323 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 10:52:26 ] ttp://www.inside-games.jp/news/232/23262.html すげー
324 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 11:09:26 ] OpenGL 3.0て具体的にはどんなんになるんだ。
325 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 13:29:05 ] あれだろ コンセプトだけ言って、具体的には何もできてないっての
326 名前:デフォルトの名無しさん [2007/09/05(水) 16:55:37 ] >>325 それは、もまえ、OpenGL自体を馬鹿にしているのかw
327 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 00:03:47 ] むしろ、交差とか法線計算とかエッジ検出とか・・自動でやってくれるようにはならんかね。 楽したいんじゃ。ワシャ。 この前セレクション出来るようになったばっかなのに(^ω^;;)
328 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 02:36:51 ] >>308 nVidiaのドライバの設定にあるtheaded optimizationがautoになってると遅くなったり速くなったりするようだ。 onにすると常に速く、offにすると遅くなるようだ。 このオプションはマルチコアCPUで複数スレッドを使って高速化するかどうかのオプションらしい。 fpsが60以上になるとだんだんとCPU側がボトルネックになってきてるんかな。 >>327 そういうのはwild magicとかなんとかライブラリを使えばいいんじゃない?
329 名前:308 mailto:sage [2007/09/06(木) 08:33:45 ] >>328 うお、ありがとうございます。 ただ、うちだとoffにすると常に速くなるようになりました。 (FPS60超える/超えない関係なく) なんかこれ不気味なオプションですね…。
330 名前:デフォルトの名無しさん [2007/09/23(日) 10:52:18 ] www.4gamer.net/news/history/2005.10/20051018204436detail.html
331 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 23:02:51 ] glGenTextures()してgluBuild2DMipmaps()した画像のテクスチャが、 ウィンドウがリサイズされたときにSDL_setVideoMode()すると画像が無くなってしまうのですが、仕様ですか? リサイズされたときビューポートをウィンドウと一致させたくて毎回SDL_setVideoMode()しているのですが、 glViewPort()を使ったほうがいいのでしょうか?
332 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 23:26:38 ] カラーマップの使い方がいまいちわかりません おしえてください
333 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 23:40:53 ] >>331 ウインドウのサイズが変わるたびにglViewportするべき だと俺は考える
334 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 02:53:26 ] リサイズでビューポートとprojection matrix設定しなおしてるんだけど、 そうするとディスプレイリストが無効になることがあります。 リサイズのときにディスプレイリストを消して作り直すことにして回避したけど、 これはそういうものですか? それともどっかおかしい?
335 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 03:19:00 ] >>334 俺の経験上、ウインドウのリサイズでディスプレイリストを作り直すってことは無いな… glRasterPosとか使ってるのかな?? >>331 ならglTexParameterのGL_TEXTURE_MIN_FILTERなり、GL_TEXTURE_MAG_FILTER なり と思ったりするけど、どうなんかなぁ〜
336 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 05:05:44 ] ウィンドウ全体を FBO あるいは pBuffer でテクスチャに取り込んで、自前でダブルバッファリングをしようと考えています。 しかし、もしウィンドウのサイズが最大テクスチャサイズを超えてしまうとどうしようもありません。そういう場合どうすればいいのでしょうか?
337 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 22:48:26 ] >>336 いくつかのテクスチャに分割するしか無いだろうな
338 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:09:11 ] glTexImage2Dでは2^n乗のサイズしか指定できませんが、 gluBuild2DMipmapsではどんなサイズでも指定できることに関して、わからない点があります。 ミップマップは使う必要がない場合、例えば100*200の画像をglTexImage2Dでテクスチャ化しようとしたとします。 ここから128*256というサイズのテクスチャを作るところまではいいのですが、 そうした場合、100*200に対してはみ出ている部分も含めて、128*256のテクスチャがopenGLに渡されますよね。 そうすると、glTexCoord2fに指定する値は、(0〜100/128) * (0〜200/256) としなければ、 こっちが広げてやった余白(?)も表示されてしまいます。 しかし、gluBuild2DMipmapsで100*200を指定してやった場合は glTexCoord2fに指定する値は、(0〜1) * (0〜1) でうまくいきます。 これはどういうことですか?glTexImage2Dを使ってテクスチャを作った後、 任意のサイズの元画像にたいして、glTexCoord2fに指定する値を(0〜1) * (0〜1) で操作できるようにする方法を教えてください。
339 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:17:39 ] gluBuild2DMipmapsは任意のサイズの元画像を2^n乗のサイズに拡大縮小する www.opengl.org/sdk/docs/man/xhtml/gluBuild2DMipmaps.xml >Initially, the width and height of data are checked to see if they are a power of 2. >If not, a copy of data (not data), is scaled up or down to the nearest power of 2.
340 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 01:19:40 ] 2.0以降ならgluBuild2DMipmaps使わんでも 非2^nのサイズ扱えるし、ミップマップも生成してくれる。(パラメータの設定次第
341 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 12:35:09 ] >>331 ,334 Windows上のSDLだとsetVideoModeするとOpenGLのコンテキスト作り直される 設定やらディスプレイリストやらテクスチャは全部作り直す必要があるぞ Windows以外ではどうなってるかわからん
342 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 15:28:10 ] >>339 てことは内部で既に縦横比が変更されてるんですね。ありがとうございます。 >>340 >(パラメータの設定次第 調べてみます。 >>341 ありがとうございます。やはりそうなんですね。ウィンドウリサイズにはglViewportだけ動かすようにしました。
343 名前:デフォルトの名無しさん [2007/10/11(木) 13:21:30 ] >>341 ゲッ! もしかして、OpenGLで、DirectDraw使って全画面表示やってた時に、 環境によって、うまく動かなかった(画面真っ黒)のは、もしや、これのせいだったのか? Geforceでは、うまく動いてたからなぞだったんだが・・・
344 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 00:44:43 ] スキンメッシュについて学びたいんだけど、 いいサンプルとかない?
345 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:54:45 ] OpenGLを使って作った画像の情報が欲しいんですが キャプチャ以外で画像の情報(RGBなど)はとってこれるんでしょうか
346 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:59:45 ] glReadPixels
347 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 02:42:05 ] >>346 ありがとうございます。調べてみました。 いろんなサイトのサンプルを見てみたのですが 具体的にどのようにプログラムすればいいのかどうしてもわかりません・・ (出てきた画面をキャプチャしたいんですが、どうすればいいんでしょうか)
348 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 16:20:56 ] >>347 少なくとも unsigned char pBuffer = new unsigned char[WIDTH*HEIGHT*4]; // sizeof(RGBA)==4? glReadPixels(0,0 WIDTH,HEIGHT GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid *)pBUffer); この位は実験してみようや。
349 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 00:50:11 ] オフスクリーンの DIB にOpenGLで描画してビットマップ参照しれ
350 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 16:46:28 ] >>348 ありがとうございます、解決できました
351 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 17:39:49 ] GPUレイトレっぽいことをやりたくて、バウンディングボックスの各面からレイを放って 各面に3次元テクスチャを並行投影したくて下記のようにしてるのですがどうも表示がおかしいのです。 確認したいのですが、これはちゃんと各頂点に、テクスチャ座標の0と1が対応されてマッピングされていますよね? void vertex(float x, float y, float z) { glActiveTexture(GL_TEXTURE0); glMultiTexCoord3fARB(GL_TEXTURE0_ARB, x, y, z); glVertex3f(x,y,z); } void drawQuads(float x, float y, float z) glBegin(GL_QUADS); /* Back side */ glNormal3f(0.0, 0.0, -1.0);vertex(0.0, 0.0, 0.0);vertex(0.0, y, 0.0);vertex(x, y, 0.0);vertex(x, 0.0, 0.0); /* Front side */ glNormal3f(0.0, 0.0, 1.0);vertex(0.0, 0.0, z);vertex(x, 0.0, z);vertex(x, y, z);vertex(0.0, y, z); /* Top side */ glNormal3f(0.0, 1.0, 0.0);vertex(0.0, y, 0.0);vertex(0.0, y, z);vertex(x, y, z);vertex(x, y, 0.0); /* Bottom side */ glNormal3f(0.0, -1.0, 0.0);vertex(0.0, 0.0, 0.0);vertex(x, 0.0, 0.0);vertex(x, 0.0, z);vertex(0.0, 0.0, z); /* Left side */ glNormal3f(-1.0, 0.0, 0.0);vertex(0.0, 0.0, 0.0);vertex(0.0, 0.0, z);vertex(0.0, y, z);vertex(0.0, y, 0.0); /* Right side */ glNormal3f(1.0, 0.0, 0.0);vertex(x, 0.0, 0.0);vertex(x, y, 0.0);vertex(x, y, z);vertex(x, 0.0, z); glEnd(); } drawQuads(1.0,1.0,1.0)
352 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 17:44:18 ] 要はこういうことをやりたくて ttp://home.student.uu.se/cebl4603/thesis_html_m74d5f1f4.jpg image planeのところをどうやったらいいのか四苦八苦しています
353 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 17:52:30 ] 3次元テクスチャを並行投影ってどういう状態? そのコードだと、サイコロの各表面に2次元テクスチャを貼り付けてるのと大差ない気がするが。 3次元テクスチャの各表面を貼り付けてるだけで、内部は描画されていないが、そのへんは理解してるか?
354 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 18:13:17 ] その辺は理解しています。 サイコロの各面から、内部に向かってレイを放ってテクスチャのピクセル色を決定して(フラグメントシェーダ) それを貼り付ける、といったことをしようとしてこうなっています。 ttp://www.uploda.org/uporg1073971.jpg これは0〜64までの3次元テクスチャに 4〜60まで、テクスチャ在りにしたものを、45度程度傾けたものなのですが テクスチャがある部分を内側になればなるほど、緑〜赤のグラデにしたものです。 6面全体に一部分だけが表示されてしまって、立方体の形状が出てこなくて…
355 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:57:00 ] >>351 各頂点にテクスチャ座標の0と1は渡ってるよ。 ActiveTextureは余計な気がするけどまぁいいか。
356 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:05:47 ] >>355 ありがとうございます。 とりあえず3次元テクスチャが格納されている側面が写し取られている、と確信がもてて安心しました。 ということはフラグメントプログラムの方なのかな… fragmentの方でfor文を使うと error C6001: Temporary register limit of 32 exceeded; 201 registers needed to compile program こんなエラーが出てきて、本来走査するべきところまでいけなくて64回繰り返すところを 4回くらいしか深度を進めなくなっています ただ、CgじゃなくてGL_TEXTURE_3Dでも同じような表示がされてわけがわからんくなってます。 Cgで同じようなエラーが出たことがある方がいたら…
357 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:30:55 ] よく知らないんだけどさ、文法上はforとか記述できるとしても、 実際はループ回数やテクスチャフェッチ回数には上限があるんじゃないの? 最新のグラフィックスカードを使えば、実行結果が変わったりとかー。
358 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:33:57 ] 吐き出されているエラーが明らかにハードウェア側のことなのでそうだと思うのですが このエラーに関する記述がWEB上に4つほどしかなくて… ttp://developer.nvidia.com/object/nvemulate.html このエミュレーターでどうにかなるんじゃないか?と英語であったのですがそれを起動しても変わらず nvidiaのカード買うしかないのか…お金ないや
359 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:58:33 ] 358ですが、シェーダを弄くって テクスチャの投影部分ではなく、シェーダーで反復回数が足りないせいだと判明しました。 原因はAtiだからだと思います。for文をまわすたびにレジスタが使用されているのか、、、
360 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 04:03:52 ] どのprofileのフラグメントシェーダを使うかにもよるがfor文はループ展開されてたりするよ。 何をしようとしているのかよくわかってないけど、GPUレイトレで3次元テクスチャをボリュームレンダリングするなら、 何故画面の各ピクセルからレイを飛ばさないの?
361 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 04:59:27 ] ATIのカードだとCgでは事実上arbvp/arbfp以外の選択肢がないから 動的なループ、分岐やら新しい技術が使用できないのがきつい、というか終わってるね 最近触ってないけどGLSLだとその辺どんな感じなの?
362 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:15:42 ] >>360 画面からするとバウンディングボックスとの交差判定が必要で ものすごい遅くなっていたのです。 実際にarbvp1 arbfp1が選択されていました。 ATIしかない環境でCgを選択したのがマズイのですね… nVidiaを購入するのに…10万か…お金が。。。ない
363 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:47:04 ] ATIでもX1000系以降ならGLSL使えるよ CgでもプロファイルのglslvとglslfでGLSLにコンパイルして使える …が、使ったことはないしLatestProfileでも出てこないのであんまりお勧めはできないかも つかGeForceで10万って何買うつもりだよwwww
364 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:50:30 ] ぁ、ぃぇ PCそのものを買わないといけなくて、結局10万くらい掛かるっていうことです。 glslv glslfについてちょっと調べてみます
365 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:18:35 ] glslプロファイルは去年触ったけどnvidiaでは問題なく動くけど ATIのドライバではコンパイルできないソース吐くから使うのあきらめたな あれからだいぶ時間たってるからその辺直ってるといいね
366 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:19:53 ] OpenGL3の続報がなかなか来ないな
367 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:24:13 ] すいません質問させてください openglのプログラムのビルドで、error C2381: exit' : 再定義〜とエラーが出てしまいます 何かstdlibとglutが関係ありそうなのですが、よくわかりません 解決策がありましたら教えてほしいのですが
368 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 06:32:34 ] >>367 includeの順番入れ替えてみ
369 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 06:54:27 ] いまさら気づいたんだけどGL関数群の日本語訳manあったんだねぇ・・・orz man.sourcentral.org/debian-unstable/ja/
370 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 12:42:06 ] 367です #include<stdio.h> #include<cstdlib> #include<GL/glut.h> にしたら、解決しました 理由はわかりませんが・・・ありがとうございました
371 名前:デフォルトの名無しさん [2007/10/30(火) 16:12:14 ] 学校の課題でOPENGL使ってなんか作らないとダメなんだけどいい感じのサンプルない? インベーダーとかハノイとかルービックとか。。。 誰かおせーて
372 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 16:53:14 ] なんだ、まぁ頑張れ。 とにかく頑張れ。
373 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 17:28:53 ] >>371 OpenGLはあくまで動かすための道具なんだから基本は自分でできなきゃ というか、たぶん基礎を調べるための課題だろ がんばれ
374 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 17:44:37 ] GLSLとCgどっちを使うべき?DirectXは使わない. なるべくハード依存したくないならGLSL?
375 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 18:22:17 ] >>371 超初心者スレに同じ質問があるからそっちみれ >>374 GLSLはWindowsではIntelGPUで使えない。Macなら使えるがLinuxとかは知らん あとRadeonとかでもドライバが古いと酷いことになる CgはGL_ARB_vertex_programとかGL_ARB_fragment_programのアセンブリシェーダにコンパイルできるので SM2.0に対応してればIntelでもRadeonでもつかえる。もちろんGeForceなら最新機能も使える ただし配布するには別途ランタイムも配布する必要があるし、プロファイルによっては機能制限もある あと書き方の違いもあるんで好みでどうぞ。 俺はCgの方が好きだがGLSLのランタイム不要な点も捨てがたいな
376 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 19:17:12 ] なんでCgを標準にしなかったんだろうな GLSLをプッシュしておきながら結局撤退した3DLabs死ねよ
377 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 19:17:53 ] 俺はインテル製はsm2.0に対応しててもfboやarb_fragment_shadow、 アンチエイリアシング、その他諸々が使えないから最初から無視してるな
378 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 19:22:22 ] >>375 なるほどCgの方がハードには柔軟ですね
379 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:59:22 ] RGBで取り込んだ画像データを表示したいのですが 何か関数は用意されてるんでしょうか?
380 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 01:28:04 ] glDrawPixels
381 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 01:17:23 ] ネットにあるOpenGLのサンプル書いて遊んでいたんですけど,普通に実行できます. でも3Dデスクトップ効果の Compiz を起動させて実行すると,描画ができません. 窓枠がでなかったり色とかも変だし. これって一緒には使えないものなんでしょうか? 使えるとすれば何かおまじないのようなものを書かないといけないとかあるんでしょうか? 教えてください.
382 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 02:00:05 ] グラボのドライバが最新でも駄目ならVISTAを窓から(ry
383 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 02:12:53 ] compizはvistaじゃないから・・・ compiz起動しながらOpenGLのアプリ動かしても 俺の環境では問題ないなー どのサンプル?
384 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 09:40:01 ] 板違い 犬糞板池
385 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:08:00 ] 別にここでもいいだろ
386 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 17:04:12 ] opengl 3d絵画の初心者用サンプルプログラムが多く置いてあるサイトありませんか? 解説もついているとありがたいです
387 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:46:27 ] (#^ω^)
388 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:30:16 ] 絵画とはまた斬新な
389 名前:デフォルトの名無しさん [2007/11/03(土) 11:33:46 ] OpenGLで、絵画を書くのって難しいんじゃないの? そういうシェーダーを書かないといけないような。 水彩シェーダーは、前に見かけた気がするが、 油絵ってみたことないな・・・
390 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 11:36:45 ] >>376 3DLabsをせめないで。 すべてにおいて糞なクリエイティブを呪ってください。
391 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 13:55:14 ] クリエイティブが3DLabsを駄目にした. そしてWildeCatは死んだ,あのボードも波乱だよなIntergraphが死んだりして
392 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 04:53:55 ] glDisplayFuncで指定した関数で 6000点ほどの頂点を取ってるのですが 起動して描画まではしてくれるのですが動作がとまってしまいます。 何か解決方法はないものでしょうか
393 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 11:04:59 ] boxとかじゃなくpointで描画すれば60万点くらいは描けるよ そういうのじゃないか
394 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 00:23:50 ] >>392 >glDisplayFuncで指定した関数で glDisplayFuncって何。glutDisplayFuncのこと? >6000点ほどの頂点を取ってるのですが 頂点を取る、って何。意味不明。 >起動して描画まではしてくれるのですが動作がとまってしまいます。 動作が止まる、って何。意味不明瞭。 単に再描画がされないってだけなら、glutPostRedisplay()でも呼んでみれば。 >何か解決方法はないものでしょうか ある。 「正しい用語を正しい用法で使うこと」 これを必ず守れば良い。 なんでこれが解決方法なのか?の説明は面倒なので省く。 しかし、これを常に守る事を心掛けていれば、技術的な問題のうち半分以上は 君自身で答えを見つけられるはずだ。これはマジな話。
395 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 00:48:53 ] Kusakabe(void)論法みたいだが >>394 の言うことは確か。 3D絵画とかじゃ当たらないし、状況を文字よりもキャプったりソース上げた方が確実。
396 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 04:25:07 ] void氏は相手のバカの壁より常に一歩外側でしか喋らないからな。 横で見てる分には楽しめるんだが。
397 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:14:48 ] ということにしたいのですね。
398 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:42:43 ] そんな感じw
399 名前:初心者 [2007/11/05(月) 23:33:29 ] はじめまして。プログラミングのことについて初心者です。 次のことについてどなたか教えていただけないでしょうか。 OpenGL+glutでシミュレーション結果を表示しようとしています。 VC++で作成し、コンパイルエラーはなかったのですが、実行してみると 何も起こらずに"終了にはキーを押してください"というような画面のみでした。 しかるべき場所にそれぞれのライブラリなど置いたつもりですが... どのような原因が考えられるでしょうか。
400 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:41:43 ] ソース
401 名前:初心者 [2007/11/05(月) 23:49:25 ] すみません、わかりません。
402 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:52:46 ] その作成したプログラムのソースファイルを見せろという意味だ
403 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:07:18 ] デバックしても原因分かんないの?
404 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:34:13 ] GLUTのメインループに入らないで、プログラム終了しちゃってるんじゃないの? VisualStudioならデバッガが使いやすいし、最低限printfデバッグくらいはするべきだ。
405 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:29:21 ] >400-402 ふいたw
406 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:43:46 ] texture座標の自動生成を使うと その前に使ったglColorの値がtextureの色と混じってしまうんだけど glColorの値の影響を受けないようにするにはどうしたらいいですか
407 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 08:42:15 ] glColor を白色にしとけばいい
408 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:58:58 ] テクスチャ座標の自動生成とは関係なくて、 単にテクスチャ色とglColorの色が乗算(GL_MODULATE)されてるだけですねん。 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); を実行してやると、テクスチャの色だけが描画されるようになるよ。
409 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:01:14 ] ありがとー できました
410 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:31:27 ] FreeBSD6.2R, Mesa 7.0.1をつかっているのですが プログラム自体は動くのものの、実行時に libGL warning: 3D driver claims to not support visual 0x4c とでるのが気になります どうすればいいんですかね?
411 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:22:06 ] 該当のglvisualをサポートしてないってだけだからwarningってだけ。 本気でやるならデバイスドライバをハックしてみよう。 もっともgpu側がサポートしてなかったらどうしようもないけどさ。
412 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:18:58 ] カーマック続報 ttp://www.technobahn.com/cgi-bin/news/read2?f=200711131807
413 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:52:54 ] ほとんど自力というのがまたカーマックらしいな
414 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:05:22 ] OpenGLの日本語リファレンスマニュアルってどっかでダウンロードできませんか? 本買わないとだめ?
415 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:14:39 ] 駄目
416 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:26:24 ] やっぱりだめですか。 講座サイト漁ろう。
417 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:20:43 ] 赤本の英語版なら読めたんじゃなかった?公式で 最新かどうかわからんけど
418 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:30:04 ] たしか読めるのは古い
419 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 02:49:52 ] 古いのでよければこちらへ。 ttp://www.opengl.org/documentation/red_book/ (v1.1) ttp://www.opengl.org/documentation/blue_book/ (v1.0) 以前はここで pdf が落とせたような気がするが、今は html 化されてる模様。
420 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 03:52:33 ] 赤本はともかく、古い青本読むくらいなら最新の仕様書を読んだ本がいいね
421 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 21:50:04 ] 視点移動したらオブジェクトの一部が画面に現れないことがあるのですが どうすれば解決できますか?
422 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 22:33:54 ] >>421 オブジェクトが入るような視点にする
423 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:02:42 ] znear,zfar
424 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 12:07:50 ] objデータがバカでかいので 視界に入ってる領域だけ読み込んで表示できるようにしたいです どうすればいいですか><
425 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 12:27:02 ] データのフォーマットによるが、視界に入ってない領域を読み飛ばせばいいのでは
426 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 13:02:58 ] 視界に入ってるかどうかの領域はどうやって決めたらいいんですか><
427 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 13:13:22 ] 頂点単位ならLookAtとかPerspectiveに渡してるパラメータから視錐台を求めてそこに頂点が入ってるかどうか判別 ポリゴン単位なら視錐台とポリゴンの交差判定 フラグメント単位ならオクルージョンクエリーでも使ったら?
428 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 13:41:33 ] ありがとうございます>< >>パラメータから視錐台を求めてそこに頂点が入ってるかどうか判別 >>ポリゴン単位なら視錐台とポリゴンの交差判定 これやるためには、バカでかいデータをメモリに載せないといけない気がするのですが載りません>< 視錐台に入る座標をまとめてデータにして、それをファイルポインタで読み込むときに 1頂点読み込み→視錐台内の座標か判定→視錐台内ならメモリに格納 そんな流れになるのでしょうか>< オクルージョンクエリーという言葉初めて聴きました!見てみたら難しそうでした!
429 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 16:39:36 ] オクルージョンクエリーは冗談だ。その用途では役に立たんと思うので忘れてくれ やり方としてはそれでいいが、実際には1頂点ずつやってたら大変だわな モデルデータを前もって適当に一度にメモリに載せられる範囲に区切っておいて その範囲と視錐台が重なってるかどうか判定して重なってれば読み込む、 という感じである程度の頂点数を一気に処理した方が速いだろうな
430 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 16:44:46 ] モデルデータのバウンディングボックスをあらかじめ計算しておく
431 名前:デフォルトの名無しさん [2007/11/22(木) 21:08:48 ] 平面の方程式 Ax+By+Cz+D=0 の係数をパラメータにとって 平面を表示させるプログラムを作っています 今はyz平面上に立方体を平べったく伸ばして平面をつくって そのあと原点回りに回転移動させてから平行移動をさせる方法で平面を表現しようと考えて ↓のような感じで組んでいます ----- dcos_x = A/sqrt(A*A+B*B+C*C); dcos_y = B/sqrt(A*A+B*B+C*C); dcos_z = C/sqrt(A*A+B*B+C*C); glPushMatrix(); glColor4d(0.5, 0.5, 0.5, 0.8); glTranslated(trans_x,trans_y,trans_z); glRotated(dcos_x, 1.0, 0.0, 0.0); // x軸に対する回転移動 glRotated(dcos_y, 0.0, 1.0, 0.0); // y軸に対する回転移動 glRotated(dcos_z, 0.0, 0.0, 1.0); // z軸に対する回転移動 glScaled(1.0, height, depth); glutSolidCube(1.0); glPopMatrix(); ----- 平行移動量trans_x,trans_y,trans_zはどう与えればよいのかがわからないので trans_x,trans_y,trans_zは今のところ0.0で実質回転移動のみを行う形になっています dcos_x,dcos_y,dcos_zの計算式はこれでいいのかどうか、 trans_x,trans_y,trans_zの与え方はどのようにすればいいのか どなたか教えていただけませんでしょうか? まあ・・・根本から間違っていたり、もっといい方法があるんでしょうけど・・・
432 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:30:14 ] trans_x、trans_y、trans_zにはその平面上のどこか1点を与えてやればいいんでないの? 回転はよくわかんね というか平面を描くなら立方体を変形させるより 平面上の4点とかを適当に求めてポリゴンで描いた方が楽だと思う
433 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:47:52 ] >>432 平行移動はそれでいいね。 平面に平行な移動は無意味だから (trans_x, trans_y, trans_z) には2次元の自由度(任意性)がある。 回転については、三角関数を経由して回りくどいことしなくても、 元のyz平面の法線(=x軸)を (A, B, C) に移すような正規直交3x3行列を作ればいい。 つまり、(A, B, C) に直交する2つのベクトルを適当に選んでやればいいだけ。 こっちは法線まわりの回転について1次元の自由度ある。
434 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:22:43 ] 現在3Dゲームを製作中なのですが、学校から持ち帰ったものを家で動かそうとすると 1>fatal error C1900: 'P1' Version '20060201' と 'P2' Version '20050411' が一致しません。 1>LINK : fatal error LNK1257: コードの生成に失敗しました。 というエラーがでてきます。 思い当たる節としては ・「GLee」を入れてみた これぐらいです。どなたか解決策をお願いします。
435 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:30:12 ] 「動かそうと」具体的に何をどうしたのか 「GLeeを入れる」とは具体的にどのファイルをどこに置いたのか
436 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 02:02:36 ] >>434 学校と家のコンパイラのバージョンが違うんでないか 全プロジェクトをリビルドしてみ
437 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 07:36:28 ] >>435 「GLeeを入れる」というのは GLee.cをスタティックライブラリにして追加し glBindBufferARBなどの関数を使っていることをいいたかったんです。 >>436 リビルドしてみましたが、同じエラーでとまってしまいました。
438 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:35:57 ] >>434 ググったがVC++の環境がおかしくなってるみたいだな 解決策としてはVC++2005のSP1を入れてみる ダメならVC++を再インスコ それでもダメならOSから再インスコするくらいかな
439 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 21:23:26 ] >>438 VC++2005のSP1を入れたらなおりました!!!! 課題の締め切りが明日までだったので、本当にうれしいです!!! 今日はこのうれしさをばねに、徹夜でやろうとおもいます。
440 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:44:32 ] 嬉しさをバネにって初めて聞いたww
441 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:54:54 ] "嬉しさをバネに" の検索結果 約 1,480 件中 1 - 10 件目 (0.39 秒) www.google.co.jp/search?hl=ja&q=%22%E5%AC%89%E3%81%97%E3%81%95%E3%82%92%E3%83%90%E3%83%8D%E3%81%AB%22&btnG=%E6%A4%9C%E7%B4%A2&lr= 結構出てきて吹いたw さすがゆとり。 言葉の意味なんて考えたことないんだろうな。
442 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:13:48 ] 嬉しさのときは何て言えばいいの? 嬉しさを追い風にして?
443 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:25:04 ] こういうの突っ込む奴は言い回しに気を取られて言葉の意味なんて考えたことないんだろうな
444 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 07:39:58 ] 喜びは 糧に でいーんでねーの。
445 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:44:14 ] 糧にするのも大概はネガティブなものだと思うが。 〜をバネには単なる反発、糧には消化して教訓とするって感じじゃないか。
446 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:31:40 ] 名誉返上、汚名挽回を思い出した。
447 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:08:41 ] 嬉しさを肥やしにして
448 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:52:43 ] 喜びなら「さめないうちに」とつなぐのがいいのでないの?
449 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:00:13 ] 確信犯
450 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 04:09:52 ] >>449 さすがにその誤用をつっこむやつは最近なかなかいないが。
451 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 10:05:47 ] 役不足
452 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:52:52 ] 役不足だと言っているッ!
453 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:18:12 ] 流れ断ち切って悪いけど質問。 モデルビューの行列から視点、注視点、アップベクトルを求めたいんだけどいい方法無い? gluLookAtの逆バージョンみたいなの もう1つ質問で 頂点にウェイトをつけたいんだけど、OpenGLだとどうやってやるんだ?
454 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:26:46 ] >>453 モデルビュー行列の左上3×3の各行が それぞれ右方向ベクトル、上方向ベクトル、逆視線ベクトル。 モデルビュー行列の逆行列の4列目が視点。 のような気がする。
455 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:52:18 ] >>453 >頂点にウェイトをつけたいんだけど、OpenGLだとどうやってやるんだ? いまどきならシェーダを書く
456 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:37:09 ] >>454 どうせ逆行列求めるなら、1〜4列目がそれぞれ 右、上、逆視線、視点 でいいと思ったw あと頂点ウェイトは glVertexWeightfEXT かな。
457 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 11:58:24 ] ARB_vertex_blend拡張はATIにしかなく EXT_vertex_weighting拡張はNVIDIAにしかない 頂点ブレンドは汎用的な方法があんまりないから シェーダでやるのが一番無難だろうな
458 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:32:05 ] >>457 NVIDIAもARB_vertex_blend対応してるぞ。
459 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:20:37 ] >>458 まじか うちのGeForce8600GTでは無いみたいなんだけど… もしかしてExtensionStringに出てこないけど使えんの?
460 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:03:05 ] >>459 ソースはOpenGL Extensions ViewerのDatabase。 ちなみに8600は項目がなくてわからん。 8600Mならあるんだがなぁ
461 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:12:26 ] あ、原因わかったかも。 OSのフィルタでWindowsに絞ったらNVIDIA全滅した。 MAC使えって話っぽい。
462 名前:453 mailto:sage [2007/12/01(土) 21:56:23 ] >>454-461 サンクス う〜ん、モデルビュー行列から完全に元には戻せないのかな 注視点を求めたいんだけど、さっぱりわからない ウェイトの件はシェーダを使うのが無難みたいですね
463 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:07:25 ] 注視点は求まらんよ 見てる方向は求まるけど、その方向ですぐ目の前から無限遠までのどの点を見てるのかは失われる 奥行きをz=1とか適当に決めちゃって、そこを注視点ということにするくらいか
464 名前:453 mailto:sage [2007/12/02(日) 01:39:56 ] やっぱり無理なのか 残念だけど諦めよう
465 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 13:03:51 ] 2Dテクスチャを2^nに限定しない関数ってありましたよね。 それの1Dテクスチャ・3Dテクスチャのものってありますか?
466 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:16:40 ] GL_TEXTURE_RECT_ARBなんかのことか? それなら2D版しかない GL_ARB_non_power_of_two拡張があれば 特に何も考えずに1Dでも2Dでも3Dでも2の乗数じゃないサイズが使えるよ
467 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:51:47 ] おお、知らない言葉が出てきた ググります!
468 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 22:55:54 ] GL_ARB_non_power_of_twoって環境によってはクソ遅いんじゃなかったっけ。 標準にはなってるけど当然古いカードだと使えないし。なんだかなーという感じだ。
469 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:07:26 ] Radeon系だとクソ遅いらしいね。。 あとRadeonのドライバはOpenGLのバージョン2以降返しときながらGL_ARB_non_power_of_two対応してないこともあったり。
470 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:19:37 ] nvidiaだと快適サクサク 8600GT。 つーかシェーダ組んだときのRadeonのクソっぷりにビックリした 俺、今度からNvidia住人になるよ
471 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 16:30:01 ] ポリゴンを1000枚作って表示させたときと ポリゴンを1枚作って表示させたとき OPENGLではメモリの量違いますか?
472 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 18:28:27 ] 違う
473 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 20:46:42 ] 了解です!
474 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 21:57:58 ] 違わない処理系ってどれよ?
475 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 22:28:03 ] 描画領域のメモリは変わらんとか?
476 名前:デフォルトの名無しさん [2007/12/12(水) 10:39:47 ] すみません。教えてください。 cpadでopenGLを起動できないのですが、どうしたらいいですか? 実行ファイルが作れません。というエラーがでます。
477 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 11:29:59 ] まず落ち着こう 次にCPadでOpenGLを使わないプログラムが実行できるか確認するんだ それができたら「実行ファイルが作れません」の前にもエラーが出てるはずなのでそれを確認しよう 前に出てるエラーの原因が分からない、となってから質問しても遅くないと思うぞ
478 名前:デフォルトの名無しさん [2007/12/12(水) 15:03:05 ] お前らまだOpenGLなんか使ってんのかw
479 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 15:25:36 ] 個人的にはカーマックにその手の質問したら何て答えるのか非常に興味あるなw そういえばPS3でGLやCgが採用されるってのは結局どうなったんだろ
480 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:00:50 ] PS3ではOpenGLもCgも実装されてる でもOpenGLはパフォーマンスが出ないからGPUのコマンド直に叩くのがほとんどと聞いた 最近はほとんどシェーダだしDirect3D10もGPU仮想化されてOpenGLとたいして違いがないし どっちでもいいわな
481 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:17:02 ] >>478 うん。組み込みとかそれしか選択肢がないの多いし…
482 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:52:14 ] ゲーム機があります PS3 Wii XBOX Microsoftゲイツ様仕様のDirectXをPS3やWiiが使えると思ってるのかな。 選択肢としてOpenGL+GPU言語(Cg・GLSL)くらいしか無いでしょうに。
483 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:27:02 ] 誰に対して何の話をしてるのかわからない
484 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:54:01 ] わからないお前の神経がわからない
485 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:46:45 ] 変な勘違いをして誰に対してるのか分からない見当外れな話をする誰かさんの神経が一番わからない
486 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 01:15:25 ] gllogicopの使い方がわかりません! ttp://www.arch.oita-u.ac.jp/povjp/povjp/ref7.8/prz8209.jpg 二つの物体あわせてこういうのが作れるってことですか! 作れたら、作り方教えて下しア!!!
487 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 02:26:22 ] >>486 >二つの物体あわせてこういうのが作れるってことですか! 違う・・・ ググれ!
488 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:17:11 ] どう違うのか教えてください(;;
489 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 18:47:38 ] ぎろっぎこっプー
490 名前:デフォルトの名無しさん [2007/12/13(木) 18:51:28 ] powerpc版のLinux(Debian GNU/linux 4.0)で OpenGLを実行したらこんな警告がでてくるんですが どう解決すればよいのでしょうか? *********************************WARN_ONCE********************************* File r300_render.c function r300Fallback line 428 Software fallback:ctx->Line.SmoothFlag ***************************************************************************
491 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:42:26 ] >>400 HWで対応してないからソフトウェアで処理すんぞってことでしょ ビデオカードを換えるかglDisable(GL_LINE_SMOOTH)してみたらどうか
492 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:15:04 ] 1か月越しか
493 名前:デフォルトの名無しさん [2007/12/14(金) 00:59:11 ] シェーダーとかあるの?
494 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 11:58:50 ] OpenGLでテキスト描画したい場合ってどうするの? プラットフォーム非依存なんだから、とうぜん標準で glDrawText 関数なんてものは ないんだと思うんだけど、テキスト描画したい人はやっぱりゴリゴリコード書いて、 フォントイメージ持って来てそれを自力で転送してるの?
495 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:41:54 ] >>494 環境依存(任意のフォントでディスプレイリストを作成) glXUseXFont wglUseFontBitmaps wglUseFontOutlines 環境非依存(フォントの種類が少なく、ディスプレイリストを作らないので遅い) glutBitmapCharacter glutStrokeCharacter
496 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:02:41 ] ここでくだらん質問するまえにNeheみれ
497 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:00:32 ] >>490 mesa-r300は色々と未実装なフォールバックになるやつが結構ある。 それもfglrxならフォールバックなしに使えたりする。 内部的にはlinesmoothはvs使って実相しているらしいが、 仕様公開後もっと開発が進むんじゃないかな。
498 名前:453 mailto:sage [2007/12/14(金) 18:14:48 ] >>494 FTGLがおすすめ
499 名前:498 mailto:sage [2007/12/14(金) 18:15:43 ] すまん、名前はミスだ
500 名前:デフォルトの名無しさん [2007/12/15(土) 07:48:28 ] 二年前にCGのクラスでOpenGLを学んだが 忙しくてそれ以上続けられなかった俺様が 来年こそはと>>500 をゲット
501 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:18:14 ] >>500 大丈夫だ。若いんだから年末年始だけでOK 知的欲望全開で突っ走れ
502 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:13:22 ] Dynabook A1/X85PMC(PenIII 450MHz メモリ384MB) で、OPENGL動かそうとしたら、止まった なぜ…研究が進められない
503 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:22:36 ] >>502 随分古いマシンだな とりあえずグラフィックスドライバ更新 でもOpenGLなんて所詮は最後に表示を担当するだけなんだから 研究は進められるんじゃ?
504 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:25:01 ] www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=229374#Post229374 OpenGL 3 will not have support for the GL_DOUBLE token. This means it will not be possible to send double precision vertex data to OpenGL. OpenGL3.0からGL_DOUBLEのサポートがなくなることは既出?
505 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:27:53 ] doubleとか何に使うの?
506 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:35:58 ] 頂点シェーダのレジスタ精度が32/24/16/8bitしかないから無くても問題ないな
507 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:36:48 ] >>503 画面サイズを小さくしたら出来ました。 研究室がいきなり工事やら停電やらで土日作業できず 自宅のはもらいもののノート。一応作業できますわ
508 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 09:10:44 ] ラデのドライバを最新にしたらツールが立ち上がらなくなったんで調べてみたら ARB_fragment program_shadowのサポートが無くなってやがった AMD氏ね
509 名前:デフォルトの名無しさん [2007/12/21(金) 12:38:19 ] >>506 GL_FLOATが、16bitだよな? 32bitはなんだっけ?
510 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 22:45:13 ] テクスチャについての質問なんですが、ちょっと前までテクスチャが張れたのに、 アプリを再起動したらそれ以降全くテクスチャが張れなくなるのって何が原因 なんでしょうか? 昨日作ったソフトが今日になって全くテクスチャが張れなくなってしまって 困っています。バイナリ、テクスチャの元画像共に昨日テクスチャが張れた 時から全くいじっていません。また、ドライバの更新等もしていません。 思い当たるとしたらノートンの更新ぐらいですが…
511 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 01:03:45 ] Z座標が同じポリゴンが重なったときに重なった部分のアルファのあるテクスチャを 合成するにはどうしたらいいでしょうか? glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); は実行しているのですが、なぜか合成してくれません。 ┌―――┐ | | | | | ┌―┼―┐ └―┼―┘ | | | | | └―――┘ こんな具合です。
512 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 02:46:14 ] テクスチャのinternalformatはちゃんとGL_RGBA(あるいはその他アルファを含むフォーマット) にしてるかい??
513 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 03:34:45 ] はい、Z軸を0.0000001とかほんの少しずらすとアルファは通っているので 大丈夫です。ただ、Z軸が重なるとなぜか合成されずに上書きになってしまう orz
514 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 03:53:30 ] >>513 glDepthMask(GL_FALSE); glDepthFunc(GL_LEQUAL); 描画 glDepthFunc(GL_LESS);
515 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:22:14 ] >>514 遅くなりましたが、上手くいきました! ありがとうごさいます。
516 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:49:52 ] >>509 GL_FLOAT は float だから32ビット。 16ビットは GL_NV_half_float の GL_HALF_FLOAT_NV とか VGL_ARB_half_float_pixel の GL_HALF_FLOAT_ARB とか。
517 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:50:46 ] ×VGL_ARB_half_float_pixel ○GL_ARB_half_float_pixel
518 名前:デフォルトの名無しさん [2007/12/22(土) 22:59:39 ] >>516 float、32bitか。何年プログラマやっとんだ、アホか俺はw
519 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 20:39:34 ] void display(void) { gluLookAt(3.0,2.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glRotated(x,0.0,0.0,1.0); glColor3d(0.0,1.0,0.0); glutWireTeapot(0.5); glFlush(); } void myKbd(unsigned char key, int x, int y) { if(key == KEY_ESC) exit(0); else if(key == 'g'){ x += 1; glutPostRedisplay(); } } void init(void) { int width = 500, height = 500; double aspect = (double)width/(double)height; glClearColor(0.0,0.0,0.0,1.0); glutCreateWindow("Sample"); glutDisplayFunc(display); glutKeyboardFunc(myKbd); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0,aspect,1.0,100.0); }
520 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 20:40:54 ] >>519 キーボードを押したらティーポットが回転するプログラムを書いたんですが、 ティーポットが回転してくれません。それどころかポットがどっかに移動して しまいます。どうしたら良いですか? 教えてください。
521 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 23:49:54 ] >>520 どう見てもコンパイルすら通りそうにないコードなんだが C言語の基礎(変数のスコープとか)を勉強し直すことだな
522 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 01:06:44 ] >>520 glRotated(x,0.0,0.0,1.0); これでxを+1しても回転にならないぞw
523 名前:デフォルトの名無しさん [2007/12/25(火) 01:14:56 ] XP上のMicrosft VC++6.0でOpenGLを使いたいのですが、 どうもこうもOpenGL/gl.hが無いと言われます。 ググってみると、 XPはデフォルトであるから心配ないとしか書かれていないのです(泣) GLUTはインストール済みです。 もしよろしければ、対応策を教えていただけないでしょうか。
524 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 01:30:20 ] >>523 もし #include <OpenGL/gl.h> ってやってるなら、その行は削除。いらない。
525 名前:522 mailto:sage [2007/12/25(火) 01:55:07 ] hahaha! 勘違いしたw 酔ってるので許せ。 >>520 描画のたびに gluLookAt(3.0,2.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0); で行列を掛けてるから、どっかへ飛ぶ。
526 名前:デフォルトの名無しさん [2007/12/25(火) 04:32:13 ] > void myKbd(unsigned char key, int x, int y) で、 x += 1; は、何も影響を及ぼさない気がする・・・
527 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:22:57 ] 質問です 物体(glutSolidSphereなど)を3次元空間で動かして 動かした三次元座標空間だけマスクして 動かせば動かすほど、画像が変わっていく(3次元空間がマスクされて、隠れている画像が出てくる) ということをしたいのですが。 どうやればいいかヒントをください
528 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:23:44 ] >>527 日本語でおk
529 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:47:49 ] 伝わりにくくてすみません 要は3次元空間にマスクをマウスで書き込んでいく、ということをしたいのです。 フォトショップとかの2次元空間でのクイックマスク処理を 3次元でやるイメージです
530 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:09:50 ] 3次元でマスクってのが良くわからない… もしSculptみたいなことをやりたいならボクセルでも使うのが早いかなぁ
531 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:30:36 ] >>530 まさしくそんな感じです。 固体を削り取っていって、削られた部分だけ別の物体の色になっていくという感じです。 それか、マウスの範囲内の物体の色(不透明度)を強制的に0にしていければ…同じように出来ると考えてるのですが マウスでglutSolidSphereの範囲内のカラーを変えていく、ということ出来ますか?
532 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:41:45 ] 正直に脱がせゲーを作るといえばみんな協力するはず
533 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:49:32 ] …その発想はなかった!!!!! そっちにシフトします><
534 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:45:14 ] もし531のようなことやるのに 参考になるサンプルとか考え方あったら、レスお願いします。
535 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:04:05 ] 2Dじゃなくて、3Dでか。 そもそも、サーフェスモデルが基本なので、 「削り取る」というのをどのように表現するか・・・だな
536 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:18:27 ] 削り取るよりも >マウスでglutSolidSphereの範囲内のカラーを変えていく こっちのほうを実装するほうが、やりたいことが出来そうな気がしてきました まだ研究室で、2時くらいに帰るのですが かなりてんぱってきました
537 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:04:41 ] 536ですが アキュムレーションバッファで変更したい部分を上書きしてく、ということはできるでしょうか? もし出来るなら、エリア内の画素のαを0にして上書き・エリアを動かして0にして上書き…で削り取れるかもと思ったのですが
538 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:33:04 ] サンプル弄くってみて エリア内の指定 全体が変化する でアウトでした。 もう夜も眠れません
539 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:58:55 ] ん、もしかして2Dでマスクできればいいのか? それならStencilBufferでいいと思うけど 初心者スレにそんな話題が出てたぞ
540 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 17:54:28 ] 質問させて頂きます。 @FBOテクスチャに適当に描画。 A上のレンダリングテクスチャに、上のレンダリングテクスチャを別のオブジェクトに貼って描画。 としう事をしたいのですが、Aを行う際、@で作ったテクスチャを別のテクスチャにコピーする必要があると思います。 その、テクスチャを別のテクスチャにコピーをしたいのですがどのようにすればいいのでしょうか? できれば、高速な方法が良いです。宜しくお願いします。
541 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 17:55:05 ] すいません、くだすれと間違えました・・・。
542 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:39:29 ] OpenGL Distilledの邦訳OpenGLの神髄が出てたな さっと立ち読みしただけだがタイトル通り要点を押さえた本だった 神髄とか言うと上級向けっぽいがそうでもなく いきなり赤本を読む前に読んでおきたい本だな
543 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:41:32 ] とりあえず(あえて)7Yでポチった DirectXとか汎用言語書は自称初心者向け(笑)が増殖してるが、 買うヤツがほとんどいないOpenGL本をあえて出すということはそれなりのクオリティであると期待してみる
544 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:56:29 ] >>543 だが需要はあると思うぞ。俺も買った。
545 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 07:55:58 ] 原書で読んだよ。邦訳出たのか。神髄ってのは何か違う気が……。 各章サンプルはあるんだけどあるだけって感じなんで、初心者で 手を動かしながら理解したいって人は合わせて別のチュートリアル読んだ方がいいかも。
546 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 17:31:13 ] OpenGLでバナナの腹筋はできますか? どこかからサンプルコードはダウンロードできないでしょうか?
547 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 17:37:40 ] そんな質問どこかで見たと思ったらこのスレの頭の方だった できるけど、OpenGLのサンプルコードがあるかどうかは知らない
548 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:09:29 ] ろぼっとアームをバナナに置き換えれば
549 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:41:58 ] Cgとかのシェーダ言語のスレってないね
550 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:27:55 ] あったと思ったら違ったw CGプログラムやれや、お前ら pc11.2ch.net/test/read.cgi/cg/1025138347/ 昔はあったんだけどね 落ちちゃったのかな
551 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:48:26 ] シェーダのスレならゲーム製作技術板だがあった ついでに過疎ってるが pc11.2ch.net/test/read.cgi/gamedev/1005185166/l50 このスレもOpenGL3が出ないから話題が無いしCgとGLSLならここでもいいんじゃね? 今時DirectXでわざわざCgを使ってる奴がいるとも思えんし あとは3Dグラフィックスプログラミングスレとかかな
552 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 04:27:47 ] ndsやってるかたいらっさいますか
553 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 10:06:52 ] 仕事の質問なら帰れ 趣味でやってるなら聞くだけ聞いてやる
554 名前:デフォルトの名無しさん [2008/01/16(水) 12:50:17 ] >>549 いっぱい有りますやん。 gpuでこの板検索してみそ。
555 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 14:25:25 ] >>554 GPGPUのスレしか見つからないが グラフィックでのシェーダと使い方大分違くないか?
556 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:53:32 ] あっちで普通のシェーダ聞いたらすれ違い言われた
557 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:28:03 ] そりゃ当然
558 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:30:29 ] マウスで画面クリックしたら 3次元座標空間内の点が消える、という処理をしたいのですが 赤い○←クリック α値が0になって αテストで画面内から消滅。という流れでやろうと思っています。 ただ、どうにもクリックしたオブジェクトの選択方法・クリックによる色・αの変換方法がわからず どうにもわかりません。 参考サイトとかあったら教えてくださいませんか
559 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:53:02 ] 定期的に同じような質問が来るな。 αで消すよりポリゴンそのものの描画をカットしたほうが楽じゃないか? ポリゴン選択なら glRenderMode(GL_SELECT); gluPickMatrix あたりで検索するといいよ。
560 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:01:02 ] >>559 ありがとうございます。 そこらでググって見ましたがいまいち、クリックしたオブジェクトを、消すというのが どの時点で選択されているのかわからなく ttp://wiki.livedoor.jp/mikk_ni3_92/d/%a5%b5%a5%f3%a5%d7%a5%eb%a5%b3%a1%bc%a5%c9%3a%3aOpenGL ttp://son-son.sakura.ne.jp/programming/opengl_6.html こちらを参考にしました。 消すのに、描画をカットする方法やαを0にするのがどこをいじくってよいのやら 無数に飛んでくる玉をクリック・クリックで消すというゲームを想定してます。
561 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 01:42:23 ] それなら別にマウスピッキングなんかしないで、マウスポインタ座標と玉との距離で 処理すればいいんじゃない? 結構処理時間食うぞ、ピッキング。 他に意図があるなら別だけど。
562 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 03:20:46 ] 普通にやるならマウス座標とスクリーン座標に変換したオブジェクトのバウンディングスフィアとの衝突判定を 手前のオブジェクトから順に判定して行く感じかな もはやOpenGL関係ないけど
563 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 06:12:05 ] 床井さん復活おめ。
564 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 14:54:14 ] >>562 >もはやOpenGL関係ないけど それが普通だよ。OpenGLの仕事は基本的に描画のみ。衝突判定やピッキングは別でやるのが当たり前。 セレクションモードとかは「場合によっては使えなくもない」ってだけの仕組み。 初心者は、無理してOpenGL使うより、適当なシーングラフライブラリを使ったほうがいいと思うんだよなー。 でも敷居の低いシーングラフってなかなか無いんだよなー。
565 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:23:17 ] javaなら低レベルなJOGLか、高レベルなJava3Dっていう選択肢があるんだけどな。 と、JOGLをRhinoから遊んでる俺が言ってみる。
566 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:37:50 ] JOGLってなんでGL.glHogeHogeみたくプレフィクスだぶらせてるんだ。 メソッドのglとか定数のGL_とか、クラス名があるんだから不要じゃん? 入力面倒だよ……。
567 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:42:16 ] 定数の GL. は static import すればいい メソッドのはメンドイね
568 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:43:39 ] 下らない質問なんですが、 戦場の絆みたいなゲームって、 blenderみたいなソフトでモデル(ガンダム)を作って、 その情報を取り込んでOpenGLでプログラミングして動かしているのでしょうか?
569 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:54:16 ] 商業なら独自形式にエクスポートしたりしない? 絆のハード構成は最近のPCと同じ(チップセットがAMDでVGAがGF7800)でOpenGL使ってるからCg使ってるかもしれないけど。
570 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 03:05:48 ] >>569 むむ、言ってることが難しくて分からないです。 自分が何でこんなこと思ったのかと言うと、 たとえばもうちょっと簡単な例で、同人ゲームとかで3Dな奴ありますよね。 でも、自分にはOpenGLであんな複雑な人の形を作るなんて、とっても大変だと思うんです。 それで、たとえば何かのCGソフト(blenderとか六角大王とか)で人間の形を作って、 その人間の形を出力して、OpenGLで取り込んでプログラミングして動かすのかなと思ったんです。 実際のところどうやって3Dゲームは人の形を動かしてるんでしょうか?
571 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 08:35:42 ] >>570 基本はあってる。 3DCGソフト(ゲームなら、3DSMax、Maya、XSIあたり)でモデリングして、アニメーション付けて、 それを独自形式で適当に吐いて、 プログラムでデータとして読み込む。 後は、それをOpenGLなり、DirectXなりで画面に出力する。
572 名前:デフォルトの名無しさん [2008/01/19(土) 09:05:08 ] >>571 なるほど! とてもよく分かる説明、ありがとうございます。 ちなみに、モデリングしてアニメーションつける人と OpenGLなりDirectXで動かす人は普通別なんですよね?
573 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 12:08:24 ] 普通は別だろう 別である必要はないけど 技術的につらいし作業量的にも無理あるよな
574 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 12:33:58 ] そこそこ以上の規模のゲームでは 前者はデザイナー、後者はプログラマーの仕事だよな
575 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 12:52:20 ] 今時の同人ソフトだってグラフィックデザイナとプログラマは別れてるんじゃないかな? 規模のでかいゲーム屋ならWebの募集要項の種類眺めるだけでも雰囲気つかめるんじゃないの>>572
576 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:55:18 ] 規模によるとしか言えない。1週間も3Dソフト触ればまずまずの絵は出てくるようになるよ。 ただゲームに適したポリーを吐くのは難しいときもある。
577 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:25:19 ] GLUTによる「手抜き」OpenGL入門読んだら、次に読むべきお勧めの本は何かありますか? 赤本より簡単なやつで。
578 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:30:35 ] >>577 続きという事なら、これはどうかな。俺もまだ読んでないけど。 GLUTによるOpenGL入門2 テクスチャマッピング www.kohgakusha.co.jp/books/detail/978-4-7775-1332-1
579 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:30:54 ] とりあえず自分で何か作ってみる、のがいいんじゃないかなぁ 太陽系の模型とか、三次元テトリスとか
580 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:55:33 ] 赤本は分厚いだけで難しくはないだろ。
581 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:37:44 ] OpenGLで3次元で人体を描画するとしたら 各関節を座標で与えて表示することは可能でしょうか? 現在は例として肩から肘まではxyz座標でそれぞれの軸に何度回転しているかで 描画しているのですが… よろしくお願いします
582 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:49:17 ] 座標から角度を計算すればいいだろ
583 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 00:17:40 ] すいません、質問させて下さい。 今、複数のポリゴンに動画を貼り付けるようなことをやっているのですが、 どうしても8fps位しか出ず、複数のポリゴンと複数の動画を描画すると、0.5fps位になって しまいます。なにか高速化のヒントだけでもいただけるとうれしいのですが… テスト時の動画は400*400、処理は大体以下のような感じです。 1、カメラの設定 2、変換座標の設定 3、テクスチャの生成(1つの名前をglTexSubImage2Dで使い回し) 4、ポリゴン描画 1に戻る
584 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 00:25:19 ] どこが遅いか調べればいいじゃないか。 エスパーは出張中だ。
585 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 08:06:43 ] >>583 動画のデコードが遅いだけじゃないだろうな 動画でなく同じサイズの静止画を毎フレームglTexSubImageで設定してみて 遅いかどうかを確認してみなよ
586 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 17:01:41 ] >>585 試したところ、無変形では静止画の方が速くなりました。 ところが、回転や移動をすると、なぜか静止画の方はフレームレートが 半分ぐらいにまで落ちたのに対し、動画の方は変わりませんでした。 これはデコード以外の別なところにもネックがあると考えた方がいいんでしょうか?
587 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:05:51 ] >>ところが、回転や移動をすると、なぜか静止画の方はフレームレートが >>半分ぐらいにまで落ちた これはおかしいな。考えにくい。 プログラムうp。
588 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:31:42 ] >>587 ちょっといろいろ処理がからみついていて長くなっているのでうpは出来ませんが、モデルビューや プロジェクションの設定は動画と静止画の時は全く同じ処理で動いてます。 違うとしたら、動画から静止画を切り出すか、静止画をコピーするかの違いしかないのですが、 それは無変形の時に速度差が出てるので原因になってるわけ無いですし… 動画と静止画のサイズは一緒で、800*800ですが、サイズによっては高速に 動くようです。400*400では問題ありませんでした。
589 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:36:51 ] >> 587 と、今もう一度試したところ、どうやらゴミがついていたようで、それを取ったら ちゃんと問題なく速度を維持してました。 お騒がせしてすいません orz
590 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:36:55 ] 毎回すべてのデータを送りなおしているとか言って見る。
591 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:37:30 ] >>589 >>587 安価… orz
592 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:29:40 ] JOGLとJMFつかってJOGLに動画描画させたことあるが動画のデコードと動画の1フレーム毎にテクスチャオブジェクトに変換する処理に時間食ってるだけだったなぁ。
593 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 08:22:39 ] テクスチャデータ設定が遅いのはPixelBufferObjectでなんとかならんかな PBO2つ作って現在デコードしてるフレームの書き込み用と テクスチャ設定用でダブルバッファリングするのが速い気がする
594 名前:デフォルトの名無しさん [2008/01/23(水) 22:13:25 ] >> 542 かめれす... 「OpenGLの神髄」買いました. 分かり易くってよいです.コメント参考になりました.ありがとです.
595 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:46:41 ] NicoAE開発頑張ってね
596 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:51:32 ] 今更だけど個人でコツコツと何年もかけてソフト作るなら 基本的にインターフェース仕様が変わらないGLは相性いいね GLそのものが衰退しないという前提はあるけど
597 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 18:18:40 ] NicoAEの人かっ!!!がんばれー
598 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:51:26 ] しかしOpenGL 3.0ではガラッと変わるようなことをどこかで見たような……
599 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:04:54 ] 3.0がでて今までのが動かなくなるわけじゃないんならいいんじゃね
600 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 02:08:55 ] 今までのはそのまま動く予定みたいだな 3.0は従来とは別のコンテキストを作るようになる 両方使ってもコンテキストが別なんで全く別に処理されるって寸法らしい あと3.0の描画を2.1以前のテクスチャとして使える拡張も用意される…かもしれない
601 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:46:14 ] 初心者です。 void display(void) { glClear(GL_COLOR_BUFFER_BIT); glFlush(); } void init(void) { glClearColor(0.0, 0.0, 1.0, 1.0); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA); glutCreateWindow(argv[0]); glutDisplayFunc(display); init(); なのですが、 init関数で塗りつぶす色を指定しているのに、 その前のglutDisplayFunc(display)で描画をしています。 何故init関数で色を指定する前にglutDisplayFunc(display)を実行しても ウィンドウが塗りつぶされるのでしょうか? 逆なのではないのでしょうか?
602 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 17:21:35 ] glutDisplayFuncはコールバック関数を「登録」する関数です。
603 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 17:22:13 ] initよりdisplayが後に実行されてるからだよ。
604 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 17:23:53 ] glutなんとかかんとかFunc は、コールバック関数を登録しているだけだから。 実際に登録した関数が実行されるのは、例えば glutDisplayFunc なら画面の再描画時、 glutMouseFunc ならマウスがクリックされたとき等など。 どの命令でどのタイミングのコールバック関数を登録するかはマニュアルを参照すること。
605 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 17:23:55 ] なんですと? 登録する関数? じゃあ、glutMainLoopが描画してるんですか?
606 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 17:26:39 ] MainLoopは名前のとおり中でぐるぐる回ってる。 そのなかでイベントに応じてコールバック関数を呼び出してる。
607 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:00:56 ] OpenGLというよりコールバック関数の勉強した方がいいんじゃないか? いまどき、コールバック関数ないのはHSPくらいだぞ。
608 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:39:54 ] んなこたーない 大量にある
609 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 02:39:21 ] >表示図形のサイズをビューポートの大きさにかかわらず一定にするには, >glOrtho() で指定するの領域の大きさをビューポートの大きさに比例するように設定します. >例えばワールド座標系の座標軸が上記と同様に l, r, t, b, n, f で与えられており, >もともとのウィンドウの大きさが W×H, リサイズ後のウィンドウの大きさが w×h なら, >glOrtho(l * w / W, r * w / W, b * h / H, t * h / H, n, f) とします. >上のプログラムでは, ワールド座標系の2点 (-1, -1), (1, 1) を対角線とする矩形領域を >200×200 の大きさのウィンドウに表示した時の表示内容の大きさが常に保たれるよう設定しています. ここの意味が良くわかりません。 例えばW×H 200×200 (-1,-1) (1,1)をw×h 400×400にすると(-2,-2) (2,2)となって、 ウィンドウのリサイズに比例して表示画像も大きくなるような気がするのですが...
610 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 03:45:37 ] >>609 縮尺を一定にしたいという話なんだからそれで正しいだろ
611 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 08:15:08 ] GLUTを使って3Dアニメーションを作っているのですが、 現在表示している画面を画像ファイルに吐いてくれるような関数を探してます。 ありましたらぜひ教えてください。
612 名前:609 mailto:sage [2008/01/27(日) 09:37:39 ] >>610 やっぱり良くわからないです? ttp://upload.fam.cx/cgi-bin/img-box/a2g80127093410.jpg のようになって、表示される画像の大きさが ウィンドウをリサイズしたら比例しして大きくなりそうな気がするんですが。
613 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 10:00:19 ] >>612 考えてないでやってみるとわかる。
614 名前:609 mailto:sage [2008/01/27(日) 10:43:14 ] >>613 すいません。 考えないでやってみて不思議だから考えてるんですけれど... そんな公式暗記しろみたいな事いわれても
615 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:05:26 ] >表示図形のサイズをビューポートの大きさにかかわらず一定にする この文章をどう理解するかという問題のような気がする
616 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:10:35 ] >>612 おまえが作ったその図を見る限り 「表示図形のサイズをビューポートの大きさにかかわらず一定にする」 がめでたく実現されているようだが、いったい何が問題なんだ?
617 名前:609 mailto:sage [2008/01/27(日) 11:41:21 ] >>615 ,616 すいません。自分の説明の仕方が悪かったみたいです。 ttp://upload.fam.cx/cgi-bin/img-box/7o080127113738.jpg の赤い丸のような状態になるんじゃないかなと思ってるんです。 だって、 「表示図形のサイズをビューポートの大きさにかかわらず一定にする」 というのは、ビューポートに表示される図形の割合がリサイズしても変わらない という意味ではないのでしょうか?
618 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 12:45:02 ] >>617 どこに「割合」なんて書いてあるんだよ。 サイズと言ったらサイズだろ。
619 名前:609 mailto:sage [2008/01/27(日) 13:00:54 ] わかった! 今やっと分かったっす。 自分の日本語読解能力な無かったんです。 ありがとうございました。
620 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:55:06 ] >>619 わかったことをわかりやすく図に示してくれ 俺も不思議になってしまった
621 名前:609 mailto:sage [2008/01/27(日) 14:27:22 ] >>620 つまり、そのまんまですよ。 自分の日本語読解能力が低かったんです。 円の大きさがウィンドウリサイズしたときに、 リサイズしたウィンドウの大きさに合わせて大きくなったり小さくなったりする場合が、 (ttp://upload.fam.cx/cgi-bin/img-box/7o080127113738.jpgの赤い円の状態) glOrtho(-w / w , w /w , -h /h , h /h , -1.0, 1.0); で常に表示される割合が一定で投影される範囲が(-1, -1), (1, 1)に固定。 ウィンドウの大きさにを変えても円の大きさが固定の場合が場合が、 (ttp://upload.fam.cx/cgi-bin/img-box/7o080127113738.jpgの黒い円の状態) glOrtho(l * w / W, r * w / W, b * h / H, t * h / H, -1.0, 1.0); でウィンドウをリサイズすると、合わせて(-2,-2)(2,2)...と投影される範囲が大きくなるから 逆に考えて円の大きさは変わらない。 みたいな理解で良いんでしょうか?
622 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 15:37:35 ] C言語でOpenGLをつかって物体の動く軌跡を描くプログラムをつくるにあたって2つ質問があります。 一つは、 OpenGLでアニメーションをするときにダブルバッファをいれても アニメーションのコマ毎に物体のオブジェクトが 制止している状態であっても点滅している風になってしまう場合があるのですが どのように解消すればよいのか。 もう一つは、 軌跡を描くということで再描画の際にも軌跡を表現するオブジェクトは そのまま残しておかなければならないと思うのですが この処理はどのようにコーディングすればよいのか。 この2点なのですが、ご教授のほどよろしくお願い致します。
623 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:45:27 ] >>622 glSwapBuffer()のタイミング。 windowsで使用しているなら、windowsでの再描画系のチェック。 軌跡に関してはopenGL関係ねえ。 適当に軌跡を保持しておけばいいんじゃない?
624 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:54:33 ] バッファをクリアしないだけで勝手に軌跡にならないか?
625 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:00:15 ] Zバッファなしで、奥から描画するように上書きすればそれっぽくなるかもね。
626 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:22:29 ] glBegin(GL_POINTS)を使い、glPointSize(size)で指定したsize*sizeの 四角形を描画したいのですが、四角形にならず円形しか描画されません。 GL_POINT_SMOOTHになってるのかと思い、Disableにしてみましたが 結果は変わりませんでした。 glDisable(GL_POINT_SMOOTH); glPointSize(10); glBegin(GL_POINTS); glVertex2f(x, y); glEnd(); GL_POINTSで四角形のpixelを描画するにはどうすれば良いのでしょうか? ご教授を宜しくお願いします。
627 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:09:14 ] GL_QUADSを使えば済むと思うけど。 どうしてもというなら、円が重なるようにたくさん打てば良いんじゃないか。
628 名前:626 mailto:sage [2008/02/02(土) 16:41:23 ] >>585 確かにGL_QUADSでも良いのですが、GL_POINTSの方がポリゴンを描画するよりも高速だったので GL_POINTSで四角形の点を表示したかったのです。(数万個のパーティクルを扱いたいので) とりあえずGL_QUADSで処理する事にします。どうもありがとうございました。 昔のグラボで試したところ四角形で点が表示されました。 うーん、ハードウェアの問題なんでしょうか…?ELSA GLADIAC 786GTを使用してます。
629 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:45:26 ] 赤本に描画を高速化するコツが載ってるよ。
630 名前:629 mailto:sage [2008/02/02(土) 16:52:15 ] ごめん違った。 赤本じゃなくて、OpenGLの真髄でした。最近出た本です。
631 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:25:38 ] GLdouble color[7] for (i=0; i<7; i++) color[i] = (GLdouble)i/6.0; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); for(i = 0 ; i < 7 ; i ++){ for(j = 0 ; j < 7 ; j ++){ glColor3d(color[i], color[i], color[i]); glVertex2f(-1.0+i*0.3, -1.0+j*0.3); glColor3d(1.0, color[i], 0.0); glVertex2f(-0.8+i*0.3, -1.0+j*0.3); glColor3d(0.0, 1.0, color[j]); glVertex2f(-0.8+i*0.3, -0.8+j*0.3); glColor3d(color[i], 0.0, 1.0); glVertex2f(-1.0+i*0.3 , -0.8+j*0.3); } } glEnd(); みたいなコードって、 forの中身を glColor3d(color[i], 0.0, 1.0); glVertex2f(-1.0+i*0.3 , -0.8+j*0.3); glColor3d(color[i], color[i], color[i]); glVertex2f(-1.0+i*0.3, -1.0+j*0.3); glColor3d(1.0, color[i], 0.0); glVertex2f(-0.8+i*0.3, -1.0+j*0.3); glColor3d(0.0, 1.0, color[j]); glVertex2f(-0.8+i*0.3, -0.8+j*0.3); と順番をいろいろ入れ替えただけで 描画される形や色が変わるんですけど、同じ場所に同じ色で指定しているのに なんで順番を変えただけでグレデーションが変わってしまうのでしょうか?
632 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:44:43 ] 7 X 7 のループにしないと再現しないのか? 聞きたいことを再現する最小限のコードを載せてくれよ。 だいたい、グレデーションってどこのよ?
633 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:21:25 ] >>631 頂点の順序は重要 その順番に繋いで形にするんだから
634 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:45:54 ] >>631 は確かに論点がわかりにくいコードだが、要するに glColor3d (1) glVertex2f (1) glColor3d (2) glVertex2f (2) glColor3d (3) glVertex2f (3) glColor3d (4) glVertex2f (4) の順序を glColor3d (4) glVertex2f (4) glColor3d (1) glVertex2f (1) glColor3d (2) glVertex2f (2) glColor3d (3) glVertex2f (3) に変えたと言ってるわけで、 GL_QUADSの定義からして特に問題はないように見えるんだよね・・・。
635 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:59:08 ] 「順番をいろいろ入れ替えた」 って言ってるから、 やっぱりでたらめにいろいろ入れ替えてるんじゃないのかなぁ あとは、四角形を内部で三角形2枚に分割して処理してたりすると、 形や色の具合が変わることがあるかもしんない
636 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:08:33 ] ああ、確かにグーローシェーディングの補間結果は変わってくるな。
637 名前:631 mailto:sage [2008/02/04(月) 12:25:38 ] >>632 すいません。 ttp://www2.uploda.org/uporg1233762.jpg に再現画像をのせました。 >>633 予測する方法は無いのでしょうか? >>634 自分の言いたい事を分かりやすくいって頂いて有り難うございます。 えっと小さな四角形をグラデーションでたくさん表示したいなと思ったんですが、 プログラムを書いてる最中に「このグラデーションで表示したい」と思って プログラムを書いているのに思っている物と違う物が表示されてしまって、 順番をかえると思った物が表示される事に気づきました。 色と点は同じ指定しているのに、順番を変えるだけで表示される画像が かわってしまうので、最終的に表示される画像がどのようなグラデーションになるか、 法則?(色の補完の法則?)みたいなものは無いのでしょうか?
638 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:35:08 ] GL_QUADSやめてGL_TRIANGLESで描くようにすればいいかと
639 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 15:57:50 ] glVertexいじらずに色の順番だけ変えればいいじゃん
640 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 16:33:41 ] ポイントスプライトとかじゃだめなの?
641 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:06:26 ] どうみても学習始めたばかりの人にそれはない
642 名前:デフォルトの名無しさん [2008/02/04(月) 20:42:08 ] 床井先生のとこによさげなサンプルがあるよ。 OpenGL point sprite でググったら一番上にでてきた。
643 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:42:46 ] ageちまった。スマン。
644 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:22:33 ] GLUTでワールド座標系とデバイス座標系とマウスの座標の質問です。 「デバイス座標系とワールド座標系ではglutMouseFuncに渡されるマウスの座標の上下が反転している 」 というのがいまいち理解できません。 glutMouseFunc(mouse); void mouse(int button, int state, int x, int y){ static int x0, y0; switch(button){ case GLUT_LEFT_BUTTON: if(state == GLUT_UP){ glColor3d(0,0,0); glBegin(GL_LINES); glVertex2i(x0,y0); glVertex2i(x,y); glEnd(); glFlush(); }else{ x0 = x; y0 = y; } break; printf("(%d %d)¥n",x,y); というプログラムで、 glOrtho(-0.5,w - 0.5,w-0.5,-0.5,-1,1); とやって上下を逆転させてやると正しく線が引ける事 glOrtho(-0.5,w - 0.5,-0.5,w-0.5,-1,1); とやると引かれる線の状態が鏡のように反転する事を確認しました。 でもprintf("(%d %d)¥n",x,y);で渡されるxとyは、glOrthoで上下反転してもしなくても、左上が(0,0)で右下は(w,h)であるようです。 それに上下反転させると絵も下のように逆転しそうな気がするのですが... tune.ache-bang.com/~vg/outitem/up/img/18549.jpg 上のように絵は逆転しないのでしょうか?なぜ上下が反転しているのに、printf("(%d %d)¥n",x,y)で渡される値は正しいのでしょうか?
645 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:24:55 ] 対照物を行ったり来たりさせる代表的なアルゴリズムを教えてくれ! ifとかつかっても俺の頭では行きっぱなししかできん!
646 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:33:43 ] sin
647 名前:644 mailto:sage [2008/02/04(月) 22:38:35 ] すいません。絵は上下逆転しますね。 でも、マウスをクリックして渡される座標は左上が(0,0)で右下が(w,h)で良くわかりません。 それとプロの方々はこのようにワールド座標系とデバイス座標系が逆転する時は、 わざわざ逆転したとき用にプログラムを書いているのでしょうか?
648 名前:644 mailto:sage [2008/02/05(火) 01:39:33 ] 分かったぁ。 デバイス座標系では左下が(0,0)なのに、 ワールド座標系では左上が(0,0)になるから、書いた線が鏡に書いたように逆転するんだ! 下の絵のような感じで。 ttp://www2.uploda.org/uporg1234742.jpg 絵に描けばすぐ分かったのに、なんでグダグダ頭の中で考えてたんだ、自分の馬鹿。
649 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 04:49:27 ] よくわかんないけど、自演乙
650 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 05:16:26 ] OPENGLでつくったアニメーションをスクリーンセイバーにできますか? WindowsでVisual C++でつくりました。
651 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 05:52:05 ] もちろんできますよ!
652 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 07:01:29 ] .exe を .scr にする。 ほらできた!
653 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:35:17 ] 最近勉強始めたんですけど、 OpenGLってHCLの道具として役に立つんですか?
654 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:33:34 ] 塩酸?
655 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:38:45 ] >>652 ありがとう!できた!でもめちゃくちゃ重くなった!
656 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:31:26 ] スクリーンセーバーは正しい作り方があるからggr
657 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:37:18 ] >>653 HCLがなんだかさっぱりわからんけど OpenGLは3D*描画用*のAPIだ それが役に立つなら役に立つんじゃね?
658 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:29:26 ] >657 HCLじゃなくてHCIでした。単なる読み間違いでした。
659 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:50:12 ] >>658 HCIがなんだかさっぱりわからんけど OpenGLは3D*描画用*のAPIだ それが役に立つなら役に立つんじゃね?
660 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:17:41 ] ワロタ 俺もHCIがよくわからんのでググッタカス だがわからん
661 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:55:12 ] Human Computer Interaction とか Interface とかじゃないかなぁとまじれす。そして結論は >659
662 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 06:34:16 ] glEnable(GL_COLOR_LOGIC_OP); glLogicOp(GL_INVERT); glBegin(GL_LINES); 線を引く glend(); glDisable(GL_LOGIC_OP); というプログラムなのですが、 GL_COLOR_LOGIC_OPは「図形の描画の際に,ウィンドウに既に描かれている色と, これから描こうとする色の間で論理演算を行うことができるようにします」 という解説が有りました。 「GL_INVERT はウィンドウに描かれている内容の, これから描こうとする図形の領域を反転します」 とあります。 つまりコレは、以前引いてある同じ色の線の色を反転して、新しい線をまた反転した色で引くプログラムという 理解で良いのでしょうか? 「ウィンドウに描かれている内容の, これから描こうとする図形の領域を反転します」の意味がいまいち理解できないんです。
663 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:31:55 ] 白地に青で書くと黄色になる。
664 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:51:47 ] >>662 黒が白に、白が黒になるのが反転 GL_INVERTは「これから描こうとする色」は使われない 「すでに描かれている色」を反転するのみ >以前引いてある同じ色の線の色を反転して 以前に線を引いてある必要はない たとえば真っ白のところにGL_INVERTで線を引くと黒い線になる 真っ黒のところにGL_INVERTで線を引くと白い線になる >>663 それはGL_XORだろう
665 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:33:56 ] >>662 ちがうよ
666 名前:デフォルトの名無しさん [2008/02/15(金) 02:21:24 ] 人間の顔の表面の形状を表した座標点のデータがあるのですが、これをポリゴンを使ってサーフェスモデルみたいにしたいのですが、これってどうやったらいいのでしょうか?
667 名前:デフォルトの名無しさん [2008/02/15(金) 03:03:19 ] 手作業でがんがれ!
668 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 03:17:11 ] 点群をトライアングルメッシュに直してくれるソフトとかあるよ 超高いけど
669 名前:デフォルトの名無しさん [2008/02/15(金) 03:19:02 ] >>668 お金がないので、フリーか、もしくはプログラミングの方法があればお願いします。
670 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 08:03:56 ] Delaunay法使ったら? vtkとかMayaViに逃げるとか。
671 名前:デフォルトの名無しさん [2008/02/15(金) 09:52:25 ] >>670 ありがとうございます! 試してみます。
672 名前:デフォルトの名無しさん [2008/02/15(金) 14:06:08 ] ドロネー図を書く場合って、どんな関数を使えばいいですか?
673 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:30:35 ] >>672 vtkならサンプルがある。 フルスクラッチで書く技量が無いなら取り敢えず他人のソースを参考にしろ
674 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:48:59 ] 投影と射影って同じ意味ですか? 本を読んで勉強しているのですが、 「射影変換には、射影変換には透視射影と平行射影が〜」 または、 「投影変換には大きくわけて、透視投影と平行投影が〜」 みたいに、どう見ても同じ無いようなのに、ころころ文によって 射影と投影が使われていてとても疑問なんです。
675 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:55:21 ] 一緒 どっちも projection の訳語
676 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:21:48 ] トンです。
677 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:44:52 ] VisualStudio2005でglpngを導入してテクスチャーをやりたいのですが glpng.hを設定しただけでは上手くコンパイルが通りませんでした。 調べたところd.hatena.ne.jp/minami_SC/20070425/1177462910 のページが出てきて この通りにやってみたのですが ここでもコンパイルが通らずエラーを吹いてしまいます。 VisualStudio2005でのglpngを導入方法はできないのでしょうか? できるのでしたら方法をご教授ください。
678 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:34:10 ] |:;:;:;:;:;:;:;:;:;:;:;:;:;:i;:;:;:;:;:;:;:;:;:;:;:;:;| |;:;:_:;:_:;:_:;:_;:;_:;:l:;_;:_:;:_:;:_:;:_;:_;| |______|_____| | 三| _ _ |三 ! | 三| 三シ ヾ三 |三 | | 三′ .._ _,,.. i三 | ト、ニ| <でiンヽ ;'i"ィでiン |三.| エラー内容も貼らずに質問とな!! ', iヽ! 、 ‐' / !、 ーシ |シ,イ i,ヽリ ,' : !. |f ノ ヾ! i ,、 ,..、ヽ lノ | _ _ イ l l ,ィチ‐-‐ヽ i /、 ゙i、 ゝ、二フ′ ノ/'"\ | \ ー一 / / _,ン'゙\ ,ィ|、 \ /_,、-'" _,.-''´ `丶、__ _, イ | ヽ_ 二=''" _,. -''´ """""´´ ``ー
679 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:54:29 ] >>677 d.hatena.ne.jp/minami_SC/20070425/1177462910 にある方法は使わずに、VS2005で普通に試してみた。 libc.lib のエラーがでたけど、無視するようにしたら、うまくいったよ。 それ以外のエラーだったら知らん。
680 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 11:11:49 ] すみません、エラー内容はこれです。 error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 LIBCMT.lib 無視する方法とかあるんですか?
681 名前:677.688 mailto:sage [2008/02/25(月) 11:55:04 ] 自己解決しました 最初の設定が悪かったみたいですorz
682 名前:デフォルトの名無しさん [2008/03/03(月) 20:11:07 ] 梅宮辰夫の歌に、シンボルロックいうのがあってな シンボル シンボル 外部のシンボルぅぅ〜 って
683 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:58:40 ] なんの誤爆だwww リンケージの話か?? しかもぐぐったら歌詞違うじゃん
684 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 21:00:09 ] ってうあおおぉ勘違いしてんの俺じゃんorz orz orz くだすれとごっちゃになってたorz
685 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 11:59:47 ] OpenGL 3.0
686 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 14:31:32 ] 出たのかと思ってびっくりしたじゃないか >Don’t miss the great updates on OpenGL3 at the SIGGRAPH BOF! あと三ヶ月程待て
687 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 17:13:21 ] すみません。話題がないので悪戯してみました。
688 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 19:01:00 ] >>687 ショボーン
689 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:55:40 ] > OpenGL BOF August 13th 6pm - 8pm Wilshire Grand Hotel - Wilshire Room 俺はSIGGRAPH行けないので後は頼んだ…!
690 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 00:52:45 ] キューブマップもテクスチャ座標生成も無いOpenGL ES 1.1で 環境マップっぽいことをする方法は……無いよな……
691 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 10:18:56 ] つGL_OES_texture_cube_map
692 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 13:56:26 ] 環境マップするだけなら球状マップかなにかにして テクスチャ座標だけ自前で毎フレーム計算して渡してやればいいな しかしES1.1な環境のCPUでそれをやるとなると……
693 名前:デフォルトの名無しさん [2008/06/09(月) 19:28:49 ] OpenGLを使うんじゃなくてmesaみたいにソフトウェアで実装したいのですが、 参考になるソースを紹介していただけないでしょうか? なるべくシンプルで簡単なのがいいです。 (mesaは大きすぎる)
694 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 19:53:24 ] OpenGL関係ねー!! スキャンライン、レンダリングとかでググってみてください レイトレで良ければMiniLightとか ttp://www.hxa7241.org/minilight/minilight.html
695 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:04:29 ] OpenGLやDirectXのようなAPIが出る前に書かれた 3DCGの解説書はだいたい>>693 みたいのばっかりだ。
696 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:04:15 ] 垂直同期待ってくれないので、ネットで垂直同期待つ関数をググったら wglSwapIntervalEXT という関数があるのはわかりましたが、 それを利用する方法がわかりません #include <gl/wgl.h> と書いても存在しないといわれます。 どうすればいいでしょうか?
697 名前:696 mailto:sage [2008/06/12(木) 19:14:41 ] 事故解決しました
698 名前:697 mailto:sage [2008/06/12(木) 19:23:12 ] 嘘です。 glewInit();でエラーが出ました。
699 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:42:31 ] エラーメッセージは?
700 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:31:03 ] glewInitはウィンドウ作ってから呼ぶんだぜ glewInit後wglSwapIntervalEXTに1を渡すと同期あり、0を渡すと同期無しになる しかしデフォルトは1のはずなんでドライバの設定いじってない限りは 同期取るはずなんだが、設定確認した方が良くないか?
701 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:51:49 ] この間Ubuntuで初めてOpenGLアプリ書いてみたら VSyncがオフになっててちょっとびっくり 拡張サポートはGLEEの方が個人的に好きです
702 名前:698 mailto:sage [2008/06/13(金) 14:09:21 ] >>699 1です。 >>700 ウィンドウ作って呼ぶと行けました。 ありがとうございます。 >同期 glutInitDisplayMode を GLUT_SINGLE で設定してたので非同期でした。 GLUT_DOUBLE で同期しました。のでwglSwapIntervalEXTは、必要なくなりました>< まあ、でもglewは、今後お世話になりそうなので良かったです。 ありがとうございます。