OpenGLスレ Part13
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/07/12(日) 06:55:24禁止事項
・「OpenGL終了」系のまず価値否定ありきの主観発言(客観的な懸念要素を挙げた上での建設的議論は可)
・学歴・理系か文系かに関連する差別発言
・その他の荒らし全て
これらは付き合うだけ無駄なので無視しましょう。
- 前スレ -
OpenGLスレ Part12
http://pc12.2ch.net/test/read.cgi/tech/1221215309/
- 関連サイト -
http://www.opengl.org/
http://www.mesa3d.org/
http://developer.nvidia.com/
http://www.ati.com/developer/
http://developer.3dlabs.com/
- 過去スレ -
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/
Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/
Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/
Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/
Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/
Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
0002デフォルトの名無しさん
2009/07/12(日) 06:56:54OpenGL 2.0 専用スレ
http://pc12.2ch.net/test/read.cgi/tech/1126268759/
くだすれOpenGL(超初心者用)
http://pc11.2ch.net/test/read.cgi/tech/1131208166/ (dat落ち)
- 各社のOpenGL拡張対応状況-
nVidia
http://developer.nvidia.com/object/nvidia_opengl_specs.html
ATI
http://mirror.ati.com/developer/sdk/radeonSDK/html/info/Prog3D.html
- その他もろもろリンク集 -
http://www.nbrains.net/php/pukiwiki/index.php?OpenGL
0003デフォルトの名無しさん
2009/07/12(日) 06:57:48■OpenGLコーディングの補助
・glew http://glew.sourceforge.net/
OpenGL拡張の利用を簡便に。
■数値演算ライブラリ
・CwMtx library http://www.xs4all.nl/~hkuiper/cwmtx/cwmtx.html
行列、ベクトル、クォータニオンの演算ライブラリ。LGPL。
・Matrix, vector and quaternion library 2.0 http://www.programmersheaven.com/zone3/cat415/26784.htm
配布ページの記述によれば無償で使えるらしい。ライセンスは未確認。
C++のメタテンプレート技法を多用しているので高速。APIとしての形も非常にシンプル。
・MathGL++ http://sourceforge.net/projects/mathgl-pp/
行列、ベクトル、クォータニオンなどの各種演算用ライブラリ。APIはOpenGLライク。LGPL。
■マルチプラットフォーム化・イベントやサウンドなどのハンドリング
・SDL http://www.libsdl.org/index.php
定番。数多くの関連ライブラリが開発されている。現在のバージョンでは描画とイベントハンドリングを分離できないため、
描画がもたつくとイベント処理ももたつく。ライセンスはLGPL。
・Allegro http://www.talula.demon.co.uk/allegro/
サポートしている機能、対応OSともにSDLに似ている。日本語資料は少ないが、Gift-wareという位の寛大なライセンスが魅力。
・GLFW http://glfw.sourceforge.net/
キーボード、マウス、ジョイスティックなどのイベント処理、タイマ、マルチスレッド辺りのみをシンプルに抑えたマルチプラットフォームライブラリ。
サウンドやその他は他のライブラリと組み合わせたい場合は、こちらの方が競合などの問題が無く安心か。
・Java+jogl https://jogl.dev.java.net/
OpenGLのJavaバインディング。現在のSun JavaVMがC++に肉薄した演算パフォーマンスを発揮している今、
Javaの豊富な標準ライブラリやSwing・Java2Dと連携できる事も考えると、今後はダークホース的選択肢に?
0004デフォルトの名無しさん
2009/07/12(日) 06:58:48・OpenAL http://www.openal.org/
3Dサウンドライブラリ。マルチプラットフォーム。DirectXゲームでもサウンドはこれを使っているものも。MacOSXでは標準で入っている。
■その他
・OpenSceneGraph http://www.openscenegraph.org/
シーングラフライブラリ。
・freetype http://www.freetype.org/
ビットマップフォントやベクタフォントのレンダリングを行うライブラリ。
■フォント描画
・FTGL http://homepages.paradise.net.nz/henryj/code/index.html#FTGL
Freetypeを利用したもの。マルチプラットフォーム。アウトラインフォント対応。日本語が使えるかは未確認。
■物理エンジン
・ODE:Open Dynamics Engine http://ode.org/ode.html
オープンソース物理エンジン(GPL or BSD-Style License)
0005デフォルトの名無しさん
2009/07/12(日) 06:59:34毎年恒例の、課題提出時期の質問ラッシュな予感!
0006デフォルトの名無しさん
2009/07/12(日) 11:53:22乙
0007デフォルトの名無しさん
2009/07/12(日) 12:42:30テンプレかwww
0008デフォルトの名無しさん
2009/07/13(月) 01:41:590009デフォルトの名無しさん
2009/07/13(月) 01:50:32MULTMATRIXマクロでも使ってろってこった
0010デフォルトの名無しさん
2009/07/13(月) 02:39:39vvector.hなんて知らないけど、これじゃだめ?
glMultMatrixf( &(matrix[0]) );
0011デフォルトの名無しさん
2009/07/13(月) 03:24:34それも良いけど、行と列の取り方が違うから、一度行列を転置させなきゃいけなくて、
些細なことだけど、結局手間は変わらないんだよね残念ながら
なんで GLUT 付属のマクロでOpenGLと扱いが違うのか謎
0012デフォルトの名無しさん
2009/07/13(月) 03:54:45計算の順番変えれば良いだけだよな……
0013デフォルトの名無しさん
2009/07/13(月) 03:58:210014デフォルトの名無しさん
2009/07/13(月) 11:02:17ホントスレ汚しスマン
0015デフォルトの名無しさん
2009/07/13(月) 12:56:320016デフォルトの名無しさん
2009/07/15(水) 02:16:47ttp://ruffnex.oc.to/kenji/src/xi.cppを弄ってますが
2点ばかりわからない点があるので教えてください。
1点目:
このままのソースではX軸周りは回転を行わず平行移動だけなので、
display()の中で、直前の回転方向を保存しておき、RotateCube()の
第5引数に渡してみたところ、一応回転するようにはなりました。
しかしよくみると、X軸→Z軸→X軸と回転させると面の色の変化が
おかしなことになってしまいます。
これはどう考えて解決するべきでしょうか?
2点目:
現在接地している面の色を知るためにはどう考えて解決するのが
一番効率的でしょうか?
0017デフォルトの名無しさん
2009/07/15(水) 03:44:50void BottomColor(GLdouble* bColor, GLdouble **vertex)
{
GLdouble color[][3] = {
{ 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 },
{ 1.0, 1.0, 0.0 }, { 1.0, 0.0, 1.0 }, { 0.0, 1.0, 1.0 },
};
int face[][4] = {
{ 0, 1, 2, 3 }, { 1, 5, 6, 2 }, { 5, 4, 7, 6 },
{ 4, 0, 3, 7 }, { 4, 5, 1, 0 }, { 3, 2, 6, 7 },
};
int i;
for(i=0; i < 6; i++){
if(vertex[face[i][0]][1] < 0.0 && vertex[face[i][1]][1] < 0.0 && vertex[face[i][2]][1] < 0.0 && vertex[face[i][3]][1] < 0.0)
break;
}
bColor[0] = color[i][0];
bColor[1] = color[i][1];
bColor[2] = color[i][2];
}
こんなんでどうにでも成る
回転に関しては、ちょっと何やってんのか分かんない
0018デフォルトの名無しさん
2009/07/15(水) 12:43:45移動回転するなら行列演算のが簡単で、元ソースみたいな頂点を自力で変更する方法はあまり良いとは言えないんじゃないかな
もちろん調べてるだけってならかまわんけど。
glRotate*やglTranslate*で移動回転して、ワールド欲しければMODELVIEW等をgetすればいいし。
接地が一番下向いてる面ってことなら法線とY軸との内積が最小(-1)ってやるのがてっとり早いような
0019デフォルトの名無しさん
2009/07/15(水) 21:35:44うまくいきません。それで一つ質問があるのですが、以下のURLの一番下のサンプル
http://www.codesampler.com/oglsrc/oglsrc_14.htm#ogl_multisample_transparency
では、GetDC→ChoosePixelFormat→SetPixelFormat→wglCreateContext→wglMakeCurrent
という通常の手順でカレントのレンダリングコンテキストを設定した上でglewInit()を呼んで
GLEWを初期化しています。
そしてwglMakeCurrent(NULL, NULL)→wglDeleteContextといったんコンテキストを削除した上で
wglChoosePixelFormatARBを実行し、
再度GetDC→SetPixelFormat→wglCreateContext→wglMakeCurrent
とカレントのレンダリングコンテキストを設定しています。
サンプルがやろうとしていることの意味は理解できるのですが、
他のサイトにはSetPixelFormatは同じウィンドウに対して一度しか呼べない、という記述もあります。
上記サンプルでは2度呼んでいるのですが、これは間違っているのでしょうか。
それとも「同じウィドウに対して一度しか呼べない」というのは
「同じDCに対して一度しか呼べない」という意味でしょうか?
0020デフォルトの名無しさん
2009/07/16(木) 15:25:23どのみちそのサンプルでは同じDCに二度SetPixelFormatしてるね。
wglがらみの問題はOSで挙動が異なることが多々あるから動くならいいやというスタンスしかない気もする。
今回の件は、最初のコンテキスト生成のためにダミーのウィンドウとDCを臨時で作って、
用が済んだらすぐ削除してはどうだろうか
0021デフォルトの名無しさん
2009/07/16(木) 20:49:55加えることができますが、OpenGL の仕様書には
オフセット値 = m * factor + r * units
と書かれています。
このときの r は implementation-dependent constant と書いていますが、この値を
取得したり計算する方法はあるでしょうか?
002219
2009/07/16(木) 21:25:41どうも。ダミーのウィンドウを作る線でやってみようと思います。
話しは変わるけれど、テンプレの>>4のFTGLは日本語(ワイド文字)使えるよね。
0023デフォルトの名無しさん
2009/07/16(木) 22:36:03FTGLはワイド文字で日本語いけますね。速いし簡単だしでとても便利。
ただ、フォントファイルに MSGOTHIC.TTC みたいなフォントコレクションを指定すると、
face indexが指定できないせいで等幅かプロポーショナルかとか選択できなくて困るんですよね。
指定できるようにするのなんて簡単だと思うんですが、なんでそうなってないんでしょう・・・。
(もし指定する方法あったら教えてください)
0024デフォルトの名無しさん
2009/07/17(金) 19:53:54うーん、FTGLはよく使うけど等幅の選択みたいなことはしたことないというか
そういう関数は見あたらないなぁ。
0025デフォルトの名無しさん
2009/07/18(土) 08:20:51visual studio で作成したGUIからの入力でopengl での描画を更新したいんですが
可能でしょうか?
0026デフォルトの名無しさん
2009/07/18(土) 11:08:060027デフォルトの名無しさん
2009/07/18(土) 11:42:010028デフォルトの名無しさん
2009/07/18(土) 11:43:30やったけど、できれば一つのプログラムで行いたいのですが。
0029デフォルトの名無しさん
2009/07/18(土) 11:50:230030デフォルトの名無しさん
2009/07/18(土) 12:34:12スマンが質問の意味が判らない。
OpenGLプログラムって何のことを指してる?
GUIアプリでOpenGLを使うだけだと思うのだが。
0031デフォルトの名無しさん
2009/07/18(土) 12:52:200032デフォルトの名無しさん
2009/07/18(土) 13:08:45実際にコンパイルできるソースを書いてくれませんか?
だな
0033デフォルトの名無しさん
2009/07/18(土) 13:35:31GUIアプリのプロセス内でGLコンテキストを持つウィンドウを作るのが常套手段だよなあ。
0034デフォルトの名無しさん
2009/07/18(土) 14:19:210035デフォルトの名無しさん
2009/07/18(土) 15:20:09003625
2009/07/18(土) 18:54:03CGの形を変える変数をGUIで打ったら、
それに応じて表示を変えるということをしたいのです。
glutMainLoop();に入ると、マウスやキーボードからの入力は受け付けるけど
GUIからの入力をどうやって反映させるのか?と思いまして。
VisualStudio2008 expressでGUIを作り、CGの形を決める変数と紐付けられたリストボックスの項目を選択すると
下の関数に入るという風にしました。
private: System::Void listData_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) {
とりあえずプロセス間通信で変数をOpenGLのプログラムに送り
glutDisplayFunc(display);のコールバック関数 displayで受け取り
CGの形を変えるようにしました。
これで問題ないけど、できればプロセス間通信無しで行いたいと思うのですが。
0037デフォルトの名無しさん
2009/07/18(土) 19:01:55GLUT使わずに自前でコンテキスト作成すればいいじゃない
0038デフォルトの名無しさん
2009/07/18(土) 19:16:54なんでプロセス間通信とか、わざわざ面倒臭い道を選ぶんだよwwww
と言いたいところだけど、自前でGLのコンテキスト作るのも慣れないと面倒だからねぇ。
えーと、そのGUIのプログラムとやらに、GL用のウィンドウを追加するのが早いと思うよ。
ただ、GLUTを使わないでやることになるので色々と追加でお勉強が必要になる。
まずはGUIプログラムとは別に、Win32API(&wgl)で簡単なOpenGL表示テストアプリを
作ってみることをオススメする。それをGUIプログラムに持っていけばいいかなと。
「OpenGL win32api」とかでぐぐれかす。
0039デフォルトの名無しさん
2009/07/18(土) 19:27:28かといって、コンテキスト云々もWinでOpenGLが目的じゃないんなら余計な手間だし、
GLUTに依存してるコード書き直すのも面倒だと思うんで今のままでいいんじゃないかな。
0040デフォルトの名無しさん
2009/07/18(土) 19:27:53なんでもいいならAntTweakBarが楽だよ
0041デフォルトの名無しさん
2009/07/18(土) 20:07:34オートコンプリート等のインテリセンスが機能しないから
効率が悪いんです
2008 Expressだとオートコンプリート機能はつきますか?
もしくはオートコンプリート機能を追加する方法はありますか?
質問がひどければ謝ります
0042デフォルトの名無しさん
2009/07/18(土) 20:21:58ただ、2003も2008もたまに機嫌を損ねるのか、インテリセンス動かなくなるけど。
あれ全然分かんないんだよなー。なんで動かなくなるのか、
動かなくなったらどうすれば回復するのか・・・。
004336
2009/07/18(土) 20:27:13そうですか。GLUTから変えるしかないということで。
今のプログラムはとりあえずこのままで使っていって、
別のopengl プログラム作るときにはコンテキスト作成するようにします。
AntTweakBarも楽に出来るなら見てみます。
0044デフォルトの名無しさん
2009/07/18(土) 20:28:33GLUTを使わないで自分でGLコンテキストを作る、
openGLに対応したGUIを使う(MUIからQtまでいろいろ)
ダイアログボックスにしてopenGLとは分離してしまう
とかかな
>>40
前スレで知ってちょっと見ただけだけど、AntTweakBarはGLUTと相性悪くね。
openGLのモデル描画を変更があったときだけ再描画したいときとか困るし
0045デフォルトの名無しさん
2009/07/19(日) 14:08:14あれ、よく見たら、もしかして.NetっていうかC++/CLI(C#と混合?)でやってんの?
だからプロセス間通信なのか・・・。
だとしたら、win32apiとか使えないかも。C++/CLIは使ったことないけど。
.Netの事は良く知らないけど、OpenGLを描画するためのコンポーネントとか無い?
まずはそれを検索してみると良いのでは。
あるいは、GLUT使ってるんならCかC++は使えるんだろうから、
C++/CLIを使うのはやめてC++でGUIも書くとか。
wxWidgets+wxFormBuilderとか、Qt(GPL版)とか使えば、GUIの作成も手っ取り早いよ。
まぁもっとも、手っ取り早いのは慣れた人だけで、wxもQtもそれなりの勉強時間は必要だけど。
0046デフォルトの名無しさん
2009/07/19(日) 14:13:050047デフォルトの名無しさん
2009/07/19(日) 14:17:53「.net openGL」でググっただけでいかようにもなりそうだが。
日本語でも英語でも。
0048デフォルトの名無しさん
2009/07/19(日) 14:20:48おおう。ホントだ! しかも何コレ簡単だし楽そうだなぁ。
今度小さなテストアプリ書くときは.Netでやってみるか〜。
>>46
w
0049デフォルトの名無しさん
2009/07/22(水) 23:11:28初期処理にて
glEnable(GL_DEPTH_TEST);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
とやり、描画ループのバッファクリアのタイミングで
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
としているのですが、ポリゴンが面の片側にしか描画されません。
こういった場合にまず疑う or 検証すべき箇所はどこでしょうか。
他にオプション関係で初期処理中に行っている事といえば、
glEnable(GL_POINT_SMOOTH);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
あと、頂点の並びが個人的にイメージしやすいので
glFrontFace(GL_CW);
としています。よろしくお願いします。
0050デフォルトの名無しさん
2009/07/22(水) 23:22:530051デフォルトの名無しさん
2009/07/22(水) 23:22:55005249
2009/07/22(水) 23:59:57ありがとうございます。
そこは確かに怪しいのですが、カリングOFFでも状況変わらずでした。
たとえば、辺の長さ1の立方体を、Z軸の真ん中で分断するような面↓を作り、
GLfloat vert[] = {
0.0f, 0.0f, 0.5f,
0.0f, 1.0f, 0.5f,
1.0f, 1.0f, 0.5f,
1.0f, 0.0f, 0.5f
};
GLfloat texPoints[] = {
0.0f, 0.0f,
0.0f, 1.0f,
1.0f, 1.0f,
1.0f, 0.0f
};
glBindTexture(GL_TEXTURE_2D, someTexID);
glTexCoordPointer(2, GL_FLOAT, 0, texPoints);
glVertexPointer(3, GL_FLOAT, 0, vert);
glDrawArrays(GL_QUADS, 0, 4);
とでもしてみて、立方体から北側となる{0.5f, 0.5f, -2.0f}辺りの視点
から上記のvert面を確認します。すると立方体の南面、東面、西面を裏側から
観る事になるのですが、この時、南面と東面の裏側にだけ、意図しない
黒いポリゴンが表示されるのです。分断面そのものは期待通りに描画されます。
どなたか似たような経験をされた方がおられれば、と思って質問しました。
005349
2009/07/23(木) 00:11:48そもそも最初にこちらで質問したかったのは、
「画面内に意図しない黒いポリゴン面が描画される原因」でした。
それで、よく見てみると、その変な黒いポリゴン面が描画されるのは
「透明部分を含むテクスチャ」を使用している面(の背後)でした。
テクスチャ画像の透明部分から、当然、向こう側が透けて見えるわけですが、
その向こう側には別のテクスチャの裏面が描画されているわけです。
そこで、その遠いテクスチャの裏返しが描画されているのなら納得できるのですが、
見えているのは真っ黒なポリゴン面でした。それで>>49のような質問を
させて頂きました。
>>52で書いたのは、そういった話をすっ飛ばして、
透明テクスチャの周囲で描画がおかしくなる、という現象の説明でした。
説明が飛び過ぎてよくわからないですね。すみません。
0054デフォルトの名無しさん
2009/07/23(木) 06:00:21ゴチャゴチャ言ってないで、うまくいかないシンプルなプログラムを丸ごとどっかにupしろ
つか、課題なら授業中に講師に聞け
0055デフォルトの名無しさん
2009/07/23(木) 08:30:12透明とか半透明を含むポリゴンは奥から手前の順番になるように描かないとだめだよ
0056デフォルトの名無しさん
2009/07/23(木) 08:48:28005749
2009/07/23(木) 09:12:53>>54
結構巨大なソースになりつつあるので、全体をアップするとは考えても見ませんでした。ちょっと時間を用意して、できる事なら該当箇所を切り出して見ます。本当にもう、課題だったら先生に聞けて楽なのですが……。ありがとうございました。
>>55,56
そのあたり、あまりきちんと理解せずに組んでいるかもしれません。特に透明が絡んだ時の描画順については全く意識していなかったので、調べて見ます。ありがとうございました。
0058デフォルトの名無しさん
2009/07/23(木) 18:31:23問題が解決したので、ご連絡します。
===状況===
GLUTを用いてマルチウィンドウを実装したソフトを動かしていると、不定期なタイミングでnvoglnt.dllでエラーが発生する。
問題のモジュールが呼ばれる順序が
kernel32->glut32->opengl32->nvoglnt
となっていた為、問題箇所を特定することが出来ず、デバッガーで追うことが出来ない(追う方法を知らない)
===問題点===
複数のウィンドウを連動させる為に、
「dispAの描画が発生したらdispBの描画も行う」
という処理を実装する際に以下のようなコーディングを行っていました。
005958
2009/07/23(木) 18:32:29/* データ処理を記述 */
/* dispAの描画を実行 */
dispA();
}
dispA(){
glutSetWindow( dispA );
/* dispAの描画処理を記述 */
・・・
glutSwapBuffers();
/* dispBの描画を実行 */
dispB();
}
dispB(){
glutSetWindow( dispB );
/* dispBの描画処理を記述 */
・・・
glutSwapBuffers();
}
dispAの描画を行う箇所が複数存在していて、ソースを簡略化するために
上記のようにdispA()の中でglutSetWindow( dispA )を実行するようにして、
dispAを呼び出したい場所ではdispA();と一行記述すればいいようにしていました。
この記述方法だと、何かのデータ処理を行う関数()が実行されると強制的にdispA()が実行されてしまうのが問題で
下記のようにglutPostRedisplay();をコールすることで描画タイミングをハードウェアに任せるように記述することで問題が解決しました。
006058
2009/07/23(木) 18:33:24/* データ処理を記述 */
/* dispAの描画を実行 */
glutSetWindow( dispA );
glutPostRedisplay();
}
dispA(){
/* dispAの描画処理を記述 */
・・・
glutSwapBuffers();
/* dispBの描画を実行 */
glutSetWindow( dispB );
glutPostRedisplay();
}
dispB(){
/* dispBの描画処理を記述 */
・・・
glutSwapBuffers();
}
前スレが見えなくなってしまったので、アドバイスを頂いた方の番号が分からないのですが、本当にありがとうございました。
0061デフォルトの名無しさん
2009/07/24(金) 19:31:37内容なので、ここで質問して良いものか迷っています。
glutに関して初心者が集うようなスレッドはありますか。
あれば紹介して欲しいです。なければここで質問させてほしいです。
0062デフォルトの名無しさん
2009/07/24(金) 19:35:480063デフォルトの名無しさん
2009/07/24(金) 21:59:33早いお返事ありがとうございます!
どの程度説明すれば伝わるか分からないのですが、とりあえず…
1.x,z軸に沿った平面を作りまして
2.その平面の上から平面に向かって垂直にスポットライトを当てまして
3.平面の光が当たっている部分が丸く明るくなっているのを確認しまして
平面は拡散反射にしているのに、何故かカメラを上に平行移動させると
丸く明るくなっているところが手前にずれてきて楕円になってしまうのです。
イメージ的にはカメラが上に上がるにつれてライトがこちらを向いてきている
ような…
因みに、カメラはライトの真上ではなくて斜めから向けてます。
長々と分かりづらい文章ですみません。
必要でしたらソースコードとか動画とか載せますんでお願いします。
私としては平面図形とライトが何故か別々の動きをしていて
それを何とかできれば…と思っているところです。
0064デフォルトの名無しさん
2009/07/24(金) 22:08:50006561
2009/07/24(金) 22:22:50それもそうですね。
見づらいでしょうが、よろしくお願いします。
#include <GL/glut.h>
GLdouble vertex[][3] = {
{ -0.5, 0.0, -0.5 },
{ -0.5, 0.0, 0.5 },
{ 0.5, 0.0, 0.5 },
{ 0.5, 0.0, -0.5 },
};
int face[4] = { 0, 1, 2, 3};
GLdouble normal[] = { 0.0, 1.0, 0.0 };
GLfloat light0pos[] = { -1.0, 5.0, 0.0, 1.0 };
GLfloat spotDir[] = { 0, -1, 0 };
GLfloat lightred[] = { 1.0, 0.3, 0.3, 1.0 };
GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 };
int flag_right = 0;
int flag_left = 0;
void display(void)
{
int i,j,k;
static double d = 0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
/* 視点位置と視線方向 */
gluLookAt(0.0, 6.0+d*d, 50.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
006661
2009/07/24(金) 22:25:18glLightfv(GL_LIGHT0, GL_POSITION, light0pos);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, white);
/* 土台の描画 */
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, white);
for( i=0; i<40; i++){
for( j=0; j<40; j++ ){
glPushMatrix();
glTranslated( i-20, 0, j-20);
/* 1*1の平面 */
glBegin(GL_QUADS);
glNormal3dv(normal);
for (k = 0; k < 4; k++) {
glVertex3dv(vertex[face[k]]);
}
glEnd();
glPopMatrix();
}
}
glutSwapBuffers();
if ( flag_right ) d = d + 0.05;
if ( flag_left ) d = d - 0.05;
if ( d < 0 ) d = 0;
}
とりあえず入りきらなかったので初期化関係その他は省きました。
全部必要だったりします?
0067デフォルトの名無しさん
2009/07/24(金) 23:51:11起動させてみたけど、ただ単にカメラを上げるにつれ、ライトとカメラのなす角度が小さくなってゆく訳で、
特に異常はないけど?
> 前にずれてきて楕円になってしまう
むしろ楕円だったのが真円に近くなってくるだろ、d増加につれ
0068デフォルトの名無しさん
2009/07/24(金) 23:55:11ソースチラ見でわかんなかったから、ちょっとコード足したら普通に点光源で動いたが
ソース出すなら、めんどくさいから全部出したほうがいいんじゃね
PROJECTIONによっては楕円に見えるかもしんないし
006961
2009/07/25(土) 03:31:13ありがとうございます。
正常に動いてますか…
いよいよどこか勘違いしてる気がしてきました。。
以下、残りです。
void resize(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30.0, (double)w / (double)h, 1.0, 500.0);
glMatrixMode(GL_MODELVIEW);
}
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CCW);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightred);
glLightfv(GL_LIGHT0, GL_AMBIENT, lightred);
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 30);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spotDir);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.01);
}
007061
2009/07/25(土) 03:34:16{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN) {
flag_left = 1;
glutIdleFunc(idle);
}
else {
flag_left = 0;
glutIdleFunc(0);
}
break;
case GLUT_RIGHT_BUTTON:
if (state == GLUT_DOWN) {
flag_right = 1;
glutIdleFunc(idle);
}
else {
flag_right = 0;
glutIdleFunc(0);
}
break;
default:
break;
}
}
007161
2009/07/25(土) 03:35:02int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutMouseFunc(mouse);
init();
glutMainLoop();
return 0;
}
手間をかけさせるような真似をしてすみません。
0072デフォルトの名無しさん
2009/07/25(土) 03:57:530073デフォルトの名無しさん
2009/07/25(土) 04:03:18init()の中のGL_SPOT_DIRECTIONをdisplayのGL_POSITIONと同じ場所で
ライトの設定はgluLookAtの後でやらないとビュー座標になる
007461
2009/07/25(土) 20:59:41おお、直りましたありがとうございます!
座標、ベクトル関係は変換行列だとかの
影響を受けるということなのかな…。。
>>72
もう解決してしまいましたが、一応。
http://www1.axfc.net/uploader/Sc/so/20994.jpg
OpenGLスレのみなさん、お騒がせしてすみませんでした。
0075デフォルトの名無しさん
2009/07/25(土) 22:01:51http://namidame.2ch.net/test/read.cgi/hidari/1225537555/
0076デフォルトの名無しさん
2009/07/28(火) 19:07:26メインスレッドで描画してたプログラムの描画命令部分をスレッド化しようとしてる
それで描画命令部分をそっくりそのままスレッド化したら、
プログラム起動 -> 描画スレッド呼出(1回目) -> スレッド破棄 -> スレッド呼出(2回目) …
この呼出2回目以降描画されなくて困ってるんだけど、原因に心当たりないかな?
HDC、HRCの設定と破棄は描画スレッドでやってる
1回目は何の問題もなく描画されてるから、原因がさっぱりわからなくて困ってる・・・
0077デフォルトの名無しさん
2009/07/28(火) 19:21:11まずはソース出せよ
0078デフォルトの名無しさん
2009/07/28(火) 19:57:520079デフォルトの名無しさん
2009/07/29(水) 12:30:430080デフォルトの名無しさん
2009/07/29(水) 13:26:15なんか藻前等凄いなw
OpenGLって文書があんま充実してないのに、よく生き残ってるよな。
以前はもっと使いやすいHOOPSとかいう3Dグラフィクスライブラリなんか
あったんだよ(すげー使いやすいかた)。
ほんと、このスレで得意げになってGLのコードすらすら書いてるヤシって
ただもんぢゃねー
0081デフォルトの名無しさん
2009/07/29(水) 15:31:490082デフォルトの名無しさん
2009/07/29(水) 18:30:17DirectXがあったところできもいので使わないけど。
ただOpenGLやDirectXにかわるスマートで見通しのいいAPIがあっても良いと思う今日この頃。
0083デフォルトの名無しさん
2009/07/29(水) 19:03:470084デフォルトの名無しさん
2009/07/29(水) 19:19:11どんなAPIになる予定だったのだろう
0085m9('v`)ノ ◆6AkAkDHteU
2009/07/29(水) 20:30:52>>81-84
レスどうもです。
思うのはね、もうちっとMayaなんかとの連携がスムーズになっていても
よかったんじゃないかなぁ・・・って。
だって、モデリングして、それ取り込んで、それからコードづらづら
書くなんてさ、15年前のGLと大差無いんですもん。
Unityとかoolong(だっけ?)なんていう技術が生まれてはいるんだけど、
なんか使い肉そぉ。
EclipseとかVisual Studioとかの統合開発環境が
これだけ発達したんだから、もちっとOpenGL自体も他の技術との親和性を
高めて欲しい。PS3とかで3Dゲームばりばり作ってる人には、SCEが
フレームワーク準備してあげてるんでしょ?
そういうフレームワークがOpenGL自体に欲しいのよね。ホントこの状態で
ばりばりOpenGLのコード書く連中って神がかってるwお世辞ぢゃなくて。
0086デフォルトの名無しさん
2009/07/29(水) 20:37:52個人の趣味レベルのものから商業レベルのものまでな。
使いこなせるかどうかは別として。
0087デフォルトの名無しさん
2009/07/29(水) 20:46:57オブジェクトに落書きみたいなことをしたいんだけど
この場合透明な色に書き換えることってできる?
0088デフォルトの名無しさん
2009/07/29(水) 20:47:47だからこそ、それぞれの分野で足りないところは自分で補えるし、使いやすい。
つか、得意げになってとか神がかってるwとか、お世辞ぢゃなくてバカにしてんだろ?w
0089デフォルトの名無しさん
2009/07/30(木) 00:49:48そりゃOpenGLはグラフィックス用のアセンブリ言語と呼ばれる位だから。
高レベルなことをしたいならそれなりのフレームワークを使えばいい。
有名どころではOpenSceneGraphとかOGREとか。他にも沢山ある。
0090デフォルトの名無しさん
2009/07/30(木) 01:01:52ごめんなさい。質問読み返したらわけが分からなかったので再質問
テクスチャ貼ってる正方形のオブジェクトに真っ白のテクスチャを貼っている状態(この状態だと見た目は白の正方形)のものがある
ここで貼っているテクスチャをglTexSubImage2Dを用いて一部を塗り替える
塗り替えた部分を透明(オブジェクトの背景まで透ける)にするためにはどうしたらいいですか?
0091デフォルトの名無しさん
2009/07/30(木) 01:10:380092デフォルトの名無しさん
2009/07/30(木) 02:00:06アルファ値を設定しても反映されないんです
オブジェクトの色とか設定するときには反映されるんですが
gltexsubimageで大きさ1*1にして1ピクセル分の要素(RGBA)を設定してるんですがRGBしか反映されません
どんな原因があるでしょうか?
0093デフォルトの名無しさん
2009/07/30(木) 02:23:510094デフォルトの名無しさん
2009/07/30(木) 03:06:04texの大きさを2^nにあわせるのに失敗しているとか、
1ピクセル分の要素の元のメモリ側の配列と、glでテクスチャイメージとして送る際の設定が噛み合ってないとか
いろいろありそう
0095デフォルトの名無しさん
2009/07/30(木) 03:16:05言ってることとやってることが違うのは良くあることだから。
0096デフォルトの名無しさん
2009/07/30(木) 10:22:370097m9('v`)ノ ◆6AkAkDHteU
2009/07/31(金) 05:16:34>>89
「ここがダメだよ、OpenGL >>85 補足」
いや、ほら、OpenGL と Open GL ESじゃはっきり言って別物だしさ、
だって、openシーングラフなんてOpenGL ESじゃ使えねーし。
なんか背後の設計思想が未熟だよ。俺だったら、もっと抽象度高めて
ESだろうが、バージョンが変わろうが、もっと透過度っつーのかな、
ともかく上手につくるね。
GLがポータビリティ高いなんて、大嘘だよ、絶対騙されるなよ。
もうJavaもObjCも、OpenGLと連携できますじゃなくて、自前のAPI設計
しろよ。やっぱできねーんじゃねーのかなw
0098デフォルトの名無しさん
2009/07/31(金) 05:25:41> 自前のAPI設計
AGLのことか?
0099デフォルトの名無しさん
2009/07/31(金) 08:53:29当然それぞれの仕様書は読んでるんだろうけど、気に入らないのはどの部分?
設計思想ってことは冒頭かな?
具体的におかしいとこ挙げてどう変わるべきか
書かなけりゃアンチが騒いでるだけにしか見えないよ
0100デフォルトの名無しさん
2009/07/31(金) 09:17:260101デフォルトの名無しさん
2009/07/31(金) 11:21:11ううん・・・一言で言っちゃえば、
6AkAkDHteUさんにとって必要なのはOpenGLではない
ってだけの話のような。
抽象度の高い、透過的なライブラリなら他にあるでしょ多分。知らんけど。
ちなみに自前のシーグラフライブラリは、ちょっと手直ししたらESでも
いい感じに動いたよ。全然複雑な事やってないから、てのもあるけど。
winからiPhoneにそのまま持っていけて、便利便利。
でもって今はGL2.1/ES2.0で動くシーングラフライブラリを一から組み直し中。
シェーダ中心になると、高レベルレイヤの組み方からして変わってくるから
GL1.x/ES1.xまで透過的に扱えるよう設計するのは、僕には難しかった・・・。
無理すればやれないことはないんだろうけど、手間の割に益無さそうだし。
0102デフォルトの名無しさん
2009/07/31(金) 11:50:540103m9('v`)ノ ◆6AkAkDHteU
2009/07/31(金) 12:09:35>>101
断言しる、藻前の技術力、相当なもんだ。
>>100と>>102については、もう「はぁ」って感じぃ〜
プログラミングのパラダイムって変わったんだよ。簡単に言うと、
EmacsからEclipseへってことだ。
とにもかくにも、OpenGLのバージョン間での透過性だけじゃなくて、
他のツールとの透過性も意識しなきゃもう時代遅れよ。GLには
フレームワーク化の努力が決定的に欠けていた。
扱うためには、>>101みたいな技術力持ってなきゃいかんっつぅのは
もうAPIとして失格。
一言で言うと、3Dっていう概念を狭く取りすぎてるんだ。
もっと視野を広げて、シェーディング、モデリングを他のツールと
上手に連携しながら行う一つの環境っつぅか、パッケージの構築に
注力しなきゃいかん。
>>101はどうよ? おまえ、凄いけど、もちっと遠くを見てOpenGL批判できる
ぐらいでなきゃだめよ。つーか、お前ぐらいの技術力あるヤシにこそ、
そういう思想を身につけてもらいたい。
以上だ(一応、京大院卒)。
0104デフォルトの名無しさん
2009/07/31(金) 12:14:250105デフォルトの名無しさん
2009/07/31(金) 12:19:09枠から外れることをする必要がでると途端に難しくなる
フレームワークはフレームワークでいくらでも存在してていいが、
OpenGLのようなハードウェアと直接対話するローレベルなAPIも選択肢としては欲しい
0106デフォルトの名無しさん
2009/07/31(金) 12:52:22キチガイに構うなよ
0107デフォルトの名無しさん
2009/07/31(金) 14:00:31全然レイヤの違う話じゃないか。
何いってんだが。
0108デフォルトの名無しさん
2009/07/31(金) 14:11:100109デフォルトの名無しさん
2009/07/31(金) 14:28:580110m9('v`)ノ ◆6AkAkDHteU
2009/07/31(金) 18:32:51>>107
スレ違いかもしらんが・・・・行くよ、サンロクマルで・・・
まじ倒すよ、プレステを。
0111デフォルトの名無しさん
2009/07/31(金) 22:18:38ぜひそのフレームワーク実装してくれ。
OpenGLもDirectXも使わずになw
0112デフォルトの名無しさん
2009/08/01(土) 00:48:180113m9('v`)ノ ◆6AkAkDHteU
2009/08/01(土) 07:38:47DirecXなんてさらに閉じた環境だな。オープン系なんて呼ぶなよ、ヴォケ。
まぁ、OpenGLの設計思想は完全な失敗だったね。
モデラーとの連携性悪すぎ、「動的スクリプティングの拡張」も無し、
OpenGL ESとのシームレスな継続性も酷いもんだ。
でもな、日本からこういった技術って生まれないよな。
>>105の言うハードウェアとの「直接対話」って、結構見落とせない部分で、
その点ぢゃOpenGLの功績は評価できるレベルだと思う。でも90年初期から
進化がなかったよ。
ちょっとさ、俺の言うことに反論できないんぢゃ、どの情報工学科からも
ドクターなんて絶対取得できないぜ。>ALL
0114デフォルトの名無しさん
2009/08/01(土) 07:43:27参考になるコードありませんか。
0115デフォルトの名無しさん
2009/08/01(土) 07:59:11>>1を読め。禁止事項全てに該当するのでお前は出入り禁止だ。
0116デフォルトの名無しさん
2009/08/01(土) 08:01:32普通に出来る。
mplayerなどはOpenGLバックエンドがあるからそのコードでも参考に。
0117デフォルトの名無しさん
2009/08/01(土) 08:03:20結局、技術力&理解が無い上っ面だけの理屈ヤローじゃんw
>モデラーとの連携性悪すぎ、「動的スクリプティングの拡張」も無し、
あのなOpenGLは低レベル描画APIで有って、
そんなのを求めてる時点で技術の無いクレクレ房なだけじゃん
どっかのミドルウェアで、モデラーと連携して動的スクリプティングの拡張してあって
GLとDXの切り替え付いてれば、GL選択して使えよw
>OpenGL ESとのシームレスな継続性も酷いもんだ。
ESってのは組み込み向けなんだよ、前提としてるハードが全然違うの
ネーミングの文句言うならともかく、お前はES、ESと言いたいだけだろw
って感じ
OpenGLとOpenGL ESを同列に扱おうとしてる時点で
C++とアセンブラを同じ目線で語って文句言ってるようなもんだ
”アセンブラは酷いもんだ、クラスとか無いし”ってな感じww
0118デフォルトの名無しさん
2009/08/01(土) 08:20:390119デフォルトの名無しさん
2009/08/01(土) 10:05:42トン
NeHeも探してたんですがLesson35にもありました。
そのサンプルも見てみます。
0120デフォルトの名無しさん
2009/08/01(土) 12:08:36設計思想を理解できてないくせに設計思想を語るのやめようぜwww
まず、仕様書を第一章から5分でいいから読んでみろ。
普通の英語力なら今お前が理解できていない内容について
すべてを物語っている一言に到達できるだろう。
お前が言っているのはお米をつくっている農家に対して
「これからはおにぎりだ、海苔がないなんて考えられない、
お米なんてつくったってダメじゃん、アハハ〜」
といっているのと同じことだってことだ。
理解できたら自分のバカさ加減を認識してとっとと去ね。
理解できなかったら自分の理解力のなさを認識してとっとと去ね。
さて、これで俺もあらし認定決定だし、消え去るといたしますかなw
0121デフォルトの名無しさん
2009/08/01(土) 12:31:49OpenGLってのは3Dソフトウェアから見れば最下層のAPIで、
3Dじゃないソフトウェアで言うなら、BIOSみたいなもんだよ。
APIやプログラミングモデル自体に不満(ステート変更が頻雑になるとか
バッファの扱いが面倒だとかシェーダの直行性が保てないだとか)があるなら
ともかく、そんな高レベルの話はOpenGLの範疇外だよ。
BIOSに対して「スクリプトで拡張できない!」とか言い出すヒトはいないでしょ。
(あ、でもBIOSがスクリプトで拡張できたら面白いナ・・・)
あと、ESとの継続性(?)って、具体的に何が不満なのかな。
全く同じソースコードが動くようにするなら、わざわざESなんて作る必要性が
無いわけで(笑)ある程度書き換えないといけないのは当たり前かと。
それよりも、API名やプログラミングモデルが共通なので今までのノウハウが
そのまま使えるというのが重要なんだと思いますが。
>>117
OpenGLとOpenGL ESの違いを、C++とアセンブラの違いに例えるのは
いかがなものかと・・・。
0122デフォルトの名無しさん
2009/08/01(土) 12:46:00> (あ、でもBIOSがスクリプトで拡張できたら面白いナ・・・)
っ Extensible Firmware Interface
> API名やプログラミングモデルが共通なので
1.1赤本くらいしか読んでいなかった人は面食らったと思う。俺とか。
まあすぐに適応したけどラッパー類の構造はかなり書き直しが必要だったな。
OpenGLがC++だとしたらESは生Cくらいの印象かなあ。
0123デフォルトの名無しさん
2009/08/01(土) 13:37:30EFIは、スクリプティングとはちと違うような。
スレ違いになるけどEFIって現状どうなってるんだろ。普及してんのかなw
ラッパの書き直しのとき、ESでは使えない機能の場合は置いておいて、
例えばglDrawElementsでインデクスのtypeにGL_UNSIGNED_INTが使えない
みたいな制限があった場合、どうしました?
1.ラッパのAPIを、GL_UNSIGNED_SHORTまでに制限する
2.ラッパの内部でintのインデクスをshortに作り直す
僕はもう面倒臭いんで1.を採用することが多いんですがw
0124デフォルトの名無しさん
2009/08/01(土) 15:04:19俺はmacも使うからEFI搭載マシンを使っていることになるな。
かといっていじれないから恩恵は受けていないのだがw
2にすると一つだけ問題があって、PSPとかiPhoneみたいなハード側の制限が厳しい環境だと、
最適化が甘いと露骨にパフォーマンスを悪化させるという点ですかね。実際2をやるんだけどさ。
多分最適な方法はラッパ側でtypedefしちゃって対象ごとに切り替えちゃうことなんだけど、
Cは精度が落ちる暗黙の変換が緩いので想定外のバグを生む可能性は知っていないとならない。
0125m9('v`)ノ ◆6AkAkDHteU
2009/08/01(土) 19:41:09>>117
先ず日本語ちゃんと使えるようにしような。その語学力じゃOpenGLは
ちとキツイだろ?
つぅか、おま、OpenGLの思想どころかエンジニアリングって何なのか
理解できてねぇつーか、理解不能なんだな。オタク工学部出身だと
したら5流大出だろ(俺、いちお京大院修了済み)。
俺はOpenGLがGLだった頃から知ってんだ。
言語は言語にとどまっちゃいかんのよ、その先へ行かなきゃ。Javaは
それで失敗したけどな。
OpenGLにはフレームワークっていぅ概念さえないぢゃん。だめだよ、
この程度ぢゃ・・・・はっきりいって駄作だ。
0126デフォルトの名無しさん
2009/08/01(土) 20:10:120127デフォルトの名無しさん
2009/08/01(土) 20:30:430128デフォルトの名無しさん
2009/08/01(土) 20:31:57何時だ
0129デフォルトの名無しさん
2009/08/01(土) 20:33:380130デフォルトの名無しさん
2009/08/01(土) 20:34:13死ね
0131デフォルトの名無しさん
2009/08/01(土) 21:02:39おまえ、「フレームワーク」って言葉を最近覚えて気に入っちゃったみたいだけど
言葉の意味ちゃんと理解してる?w
OpenGLはグラフィックハードウェアの機能・構成に対するフレームワークとして
十分その役割を果たしているだろ。
あと、ここのスレの奴らがいろいろ教えてくれてるの、ちゃんと読んでるか?
読んでて>>125のレス出してるなら理解力0のバカ(関西における意味で)だぞ。
もう一つ、GLの頃から知っているって主張するのは、かなり前から知っているけど
なんにも理解できていないんですって主張しているようなもんだから、やめときなw
0132デフォルトの名無しさん
2009/08/01(土) 21:30:040133デフォルトの名無しさん
2009/08/01(土) 21:31:30べつにフレームワークが偉いわけでも、そうでないといけないわけでもないし
低レベルなステート操作なAPIだからこそ息が長く汎用性もあるとも言えんじゃね
0134デフォルトの名無しさん
2009/08/01(土) 21:42:34概念の理解に到達しない人間がいるということに驚かされる。
しかもそれでエンジニアリングを語るとか、一体どうなってるんだ。京大パネェ
0135デフォルトの名無しさん
2009/08/01(土) 22:00:39無いとはにわかに信じがたい話だ
0136m9('v`)ノ ◆6AkAkDHteU
2009/08/01(土) 22:02:05いや、俺は京大学派に属してても、亜種っつぅかさ、系統図じゃ上のほうに
属してるんだ。
多いよ、APIだからどうのとかいってさ、言語ないしは計算機環境の
設計にまで思い至らない連中がさ。NECや富士通とかの技術者がその程度
なんだよ。
低レベルI/Oの処理とかさ、バカなこと言ってねぇで、もっと視野広げると
楽しいよ。ほんと。ま、無理だろうけど。
0137デフォルトの名無しさん
2009/08/01(土) 22:08:06なにが気に食わないのかしらないが、自分で行動を起こせばいいだろ
0138デフォルトの名無しさん
2009/08/01(土) 22:13:580139デフォルトの名無しさん
2009/08/01(土) 22:33:420140デフォルトの名無しさん
2009/08/01(土) 22:38:06学があるだのないだのみたいな。
お前ら好きだろそういうの、がんばれよ。
0141デフォルトの名無しさん
2009/08/01(土) 22:49:190142デフォルトの名無しさん
2009/08/01(土) 23:09:360143デフォルトの名無しさん
2009/08/01(土) 23:32:580144デフォルトの名無しさん
2009/08/01(土) 23:39:16http://www.amazon.com/OpenGL-Programming-Guide-Official-Learning/dp/0321552628
0145デフォルトの名無しさん
2009/08/01(土) 23:56:04ラジオシティ法の命名の件で愚痴る先生の研究室ですねわかります。
0146131
2009/08/02(日) 00:02:00>openGLはフレームワークではないだろ。
うん、まあね。
「OpenGLのパイプラインの処理モデルをホストのシステムと協力して実現できる
ことがグラフィックハードウェアに課せられている」という意味で書いたんだけど、
これって現実的にはなんの制限にもなってないよねw
そもそもGPUなんてなくたってCPUに処理させちゃっていいってことなんだし。
まあ、バカをバカにしてみたかったバカの発言ってことでお許しくださいw
0147デフォルトの名無しさん
2009/08/02(日) 00:13:55もうちょっと頑張れよwww
てか、お前何話してんの?OpenGLの話しようぜ。
0148デフォルトの名無しさん
2009/08/02(日) 00:38:58いや、元自分の研究室の学生と結婚しちゃった新進気鋭の若手先生のとこかもw
0149デフォルトの名無しさん
2009/08/02(日) 01:19:18スゲェな
0150デフォルトの名無しさん
2009/08/02(日) 01:51:46こんなに東大のCG研の人間がいたらそりゃあ馬鹿は袋叩きに遭うわけだwww
0151デフォルトの名無しさん
2009/08/02(日) 02:36:17東大は駒場の馬鹿のせいで全学2chへの投稿が弾かれているはずだ。
お前らフシアナも出来ないはずですよ! m9('v`)ノ
0152デフォルトの名無しさん
2009/08/02(日) 02:42:530153デフォルトの名無しさん
2009/08/02(日) 05:24:510154デフォルトの名無しさん
2009/08/02(日) 07:02:40♪Tous les oiseaux du point du jour chantent l'amour
♪Aux Champs-Elysées, aux Champs-Elysées
♪Au soleil, sous la pluie, à midi ou à minuit
♪Il y a tout ce que vous voulez aux Champs-Elysées
0155デフォルトの名無しさん
2009/08/02(日) 10:12:150156デフォルトの名無しさん
2009/08/02(日) 15:27:270157デフォルトの名無しさん
2009/08/02(日) 22:01:550158デフォルトの名無しさん
2009/08/03(月) 00:11:33他の方法で代替できるならそうしたほうが良い場合もある
0159デフォルトの名無しさん
2009/08/03(月) 00:21:10可能な限り抑えた方がいいです
0160デフォルトの名無しさん
2009/08/03(月) 01:21:16Vista世代のオンボカードでもglDrawPixelsじゃ1フレームで画面の1/4程度(500x500)の面積しか描けない。
バスが細いネットブック向けだと200x200がせいぜいじゃないかな。
0161デフォルトの名無しさん
2009/08/03(月) 01:43:53てか、オンボカードってなに?
0162デフォルトの名無しさん
2009/08/03(月) 01:49:40まあ、基本的にはキャッシュすればいいものはキャッシュするに越したことはないということですわな
0163デフォルトの名無しさん
2009/08/03(月) 02:36:570164デフォルトの名無しさん
2009/08/04(火) 01:35:53これでAMDも言い訳できまい。さっさと実装汁。
0165デフォルトの名無しさん
2009/08/04(火) 02:15:22マルチテクスチャの機能を使って、4枚のテクスチャを混ぜようとしていますが、
2枚のテクスチャを混ぜることはできたものの、3枚以上を混ぜる方法が分かりません。
ググったりしてみたのですが、見つけたサンプルは2枚のものばかりでした。
どなたか、3枚以上のマルチテクスチャマッピングを教えて下さい。
シングルパスでできれば、さらに嬉しいです。
0166デフォルトの名無しさん
2009/08/04(火) 03:12:480167デフォルトの名無しさん
2009/08/04(火) 03:21:52シェーダーで
使わなくてもできるだろうけど、個別の調整とかその後の拡張を考えたら、素直な実装はシェーダーの時代かと
0168デフォルトの名無しさん
2009/08/05(水) 01:45:452枚が出来るなら3枚でもできるんじゃね?
glActiveTextureのGL_TEXTURE0とかGL_TEXTURE1とかなってるところを
GL_TEXTURE2とかGL_TEXTURE3に増やして同じことやればいいだけ
ちゃんと2枚のサンプルを理解していればいけるはずだ
0169デフォルトの名無しさん
2009/08/05(水) 09:25:390170デフォルトの名無しさん
2009/08/05(水) 19:21:28main関数内のglutMainLoop();
に入ったらすぐにエラーか何かでプログラムが終了してしまいます。
何が原因なんでしょう?
下のようなメッセージが出ているのですが関係あるんでしょうか?
'C:\WINDOWS\system\glut32.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'C:\WINDOWS\system32\nvoglnt.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
0171デフォルトの名無しさん
2009/08/05(水) 20:15:480172デフォルトの名無しさん
2009/08/05(水) 22:10:11COLLADA FXというのがあるみたいですが、どういうものなのかよく分かりません。
自分のプログラムに使えるんでしょうか。
シェーダーを記述するのに使うツールって何使えばいいんでしょうか。
現在AMDのRenderMonkeyしか知りません。NVIDIAはFX Composerというのがあるみたいですが
HLSLのみで、GLSLは対応していなかった気がします。
0173デフォルトの名無しさん
2009/08/05(水) 22:59:210174デフォルトの名無しさん
2009/08/06(木) 00:24:31エラーか何かで終了するだけじゃわかりません。正常終了かもしれません。
そのメッセージは関係ありません。
>>172
特に標準形式といったものはない
とにかく複数のパス用のシェーダを通せばいいだけなので何でもいいとも言える
COLLADAでもいいけど読み込むのは結構面倒
GLSLじゃなくてCgでもいいならCgFXが読み込みは楽だよ
0175デフォルトの名無しさん
2009/08/06(木) 04:28:32/* コールバックとか色々中略 */
glutTimerFunc(16, timer, 0);
glutMainLoop();
}
void timer(int value){
glutPostRedisplay();
glutTimerFunc(16, timer, 0);
}
GLUTの解説サイトによくあるコードなのですが、
glutTimerFuncをこのように利用すると、メモリリークする症状が見受けられました。
他の関数での末尾再帰はコンパイラで最適化されて起こりません。
関数の仕様なのでしょうか?
0176デフォルトの名無しさん
2009/08/06(木) 04:42:340177デフォルトの名無しさん
2009/08/06(木) 04:47:140178デフォルトの名無しさん
2009/08/06(木) 05:02:44メモリーリークなどしません。原因は他にあるのでデバッグしてください
0179デフォルトの名無しさん
2009/08/06(木) 05:07:26timer()が末尾再帰しているとでも言いたいのか?
そもそも末尾再帰なんて全く関係ない。普通にデバッグしろ。
0180デフォルトの名無しさん
2009/08/06(木) 06:45:580181デフォルトの名無しさん
2009/08/06(木) 09:55:07CgFXをVisualStudio用のHSLS記述アドオンのInteliShadeで書いてる。
今の所ソースの色分けと関数の折りたたみと組み込み型、関数のインテリセンスぐらいしか利かないけど、
3.2が出るのが待ち遠しい。
0182デフォルトの名無しさん
2009/08/06(木) 13:54:29ありがとうございますだ
特定のピクセルに点を打ちたいときはどうすればいいんでしょう
pixelAt(int x, int y)
のような感じでスクリーンの左上からx,yの位置にあるピクセルに点を打ちたいのです
0183デフォルトの名無しさん
2009/08/06(木) 14:11:13手っ取り早いのはglRasterPos+glDrawPixels/glBitmapの組み合わせ。
ただし基本的にはノース経由のバスで座標データがやり取りされるから、そこがボトルネックになって遅くなるのは確か。
すでに送ってあるテクスチャとかをpix to pixに書くには、
射影行列をロールバックしてorthoな射影で書いて、
その後射影行列を元に戻すといった操作が有効。
auxバッファに蓄積してglCopyPixelsを使うという手もある
0184デフォルトの名無しさん
2009/08/06(木) 14:12:54glRasterPos2*()/glWindowPos2*()とglDrawPixels()でいける
glScissor()もそうだが、もうこういうことは全部シェーダーでやる時代なんだよな
0185デフォルトの名無しさん
2009/08/06(木) 17:48:24>>184
glRasterPos2fとglDrawPixelsで動作を実現できました
ありがとー
0186デフォルトの名無しさん
2009/08/07(金) 20:59:18シェーダでやってみたいのですが可能でしょうか。
無知な初心者で申し訳ございませんが、
ご教授お願い致します。
0187デフォルトの名無しさん
2009/08/07(金) 23:29:00ピクセルシェーダで二値化しつつ描画
でおk
0188デフォルトの名無しさん
2009/08/08(土) 09:21:54ご回答ありがとうございます。
処理フローはなんとなくイメージできたのですが
"ピクセルシェーダにてニ値化する"点について
詳しくご解説して頂けませんでしょうか。
0189デフォルトの名無しさん
2009/08/08(土) 13:57:35vec3 tcol = テクスチャから拾ってきた色;
if (どっちの色?(tcol)) (
gl_FragColor = 色1;
) else (
gl_FragColor = 色2;
)
ってやるだけ
0190デフォルトの名無しさん
2009/08/08(土) 14:48:54ご解説ありがとうございます。
あとは、参考書片手にやってみます。
ご丁寧にありがとうございました。
0191189
2009/08/08(土) 16:23:07ifの複文の{}が()になってるのは単なる打ち間違いデスorz
自分の使ってるキーボード、(){}[]が全て同じキーなもので(修飾キーで打ち分ける)
しかも古いCRTのフォーカスが甘くなってて打ち間違いに気付かなかった
もういい加減LCDに買い換えるか・・・
0192デフォルトの名無しさん
2009/08/09(日) 03:48:440193デフォルトの名無しさん
2009/08/09(日) 10:24:35ポリゴンの上にHTMLをレンダリングしたいのですが。
0194デフォルトの名無しさん
2009/08/09(日) 10:25:42一点が移動前と移動後で、ある平面上の三角形と衝突しているかどうかです。
移動前の座標:P0=[x0, y0, z0]、移動後の座標:P1=[x1, y1, z1]
平面:aX + bY + cZ = D 上にある三角形[x2, y2, z2], [x3, y3, z3], [x4, y4, z4]
1)まず平面を通過したかどうか判定
2)平面上の通過点を求める
3)その通過点が三角形内部にあるかどうを判定
で、質問は1)なんですが、教科書によると、平面の法線ベクトルN=[a, b, c]とP0、P1の内積を使ってP0・N + D
とP1・N + Dの積が負だと1)の判定に合格するのですが、どうしてDを足すのかが理解できません。
衝突判定で悩んだ方、どうかお助けください。よろしくおながいしますだ。
0195デフォルトの名無しさん
2009/08/09(日) 10:31:060196デフォルトの名無しさん
2009/08/09(日) 11:12:39float locationToPlane(float triangle[3], float againstLocation[3]) {
float normal[3];
triangleNormal(triangle, normal); // 平面の法線ベクトル算出
float A = normal[0] * triangle[0];
float B = normal[1] * triangle[1];
float C = normal[2] * triangle[2];
float D = A + B + C;
return DOT(normal, againstLocation) + D; // DOTは内積の計算
}
上のようになっていて、(P0・N + D)×(P1・N + D) < 0 だと平面を通過したことになるそうです。
この方法(アルゴリズム)を是非理解したいのですが、みなさんよろしくおながいしますだ。
0197デフォルトの名無しさん
2009/08/09(日) 11:30:05>>195のいうように、その場合の
平面の方程式は「aX + bY + cZ + D = 0」で
「aX + bY + cZ = D」が間違ってるんだろ。
しかし、>>196のコードは意味不明だなぁ。
0198デフォルトの名無しさん
2009/08/09(日) 11:44:45平面の方程式を aX + bY + cZ = D と置いたなら、表裏判定は aX + bY + cZ - D > 0 ? になるし、
aX + bY + cZ + D = 0 と置いたなら、表裏判定は aX + bY + cZ + D > 0 ? になりますよ。
>>196のコードは>>194の1)とは関係無いっぽいし、なんか194さん勘違いしてるんじゃないかな。
0199デフォルトの名無しさん
2009/08/09(日) 11:46:49>>196のC言語関数は、aX + bY + cZ - D = 0 に通過前の点 P0=[x0, y0, z0] を代入しているのだと思います。内積という言葉が教科書で使われていましたから、それで混乱してしまって。
でも、同じように通過後の点 P1=[x1, y1, z1] を代入して、result0×result1 < 0 だと平面通過判定合格なんですが、どうしてそうなるのかがわかりません。証明を知りたいんですが、どなたかよろしくおながいしますだ。
0200デフォルトの名無しさん
2009/08/09(日) 11:50:53おお、どうもありがとうございます。
Cの関数>>196で使っているtriangleは平面上にありますので、それで法線ベクトル[a, b, c]を算出してるんです。
すみません、>>198さんのおかげで理解できました。表裏判定してて、それで積が負になると平面通過判定合格なんでつね!
みんなありがとう!!!恥かいたけど、聞いてよかた。 ^^;
0201デフォルトの名無しさん
2009/08/09(日) 11:52:56分からないなら手計算で解いてみ(実はコレ小学校で習うけど)。
0202デフォルトの名無しさん
2009/08/09(日) 12:04:44細かいことなんでスルーでいいんだけど、平面上の1点から法線は出せないだろ。
少なくとも3点無いと。
0203デフォルトの名無しさん
2009/08/09(日) 12:13:15こりゃ確かにおかしいなw
float triangle[3][3] とかしないと
0204デフォルトの名無しさん
2009/08/09(日) 12:18:02みなさん、本当ご親切にありがとうございます・・・・
また、わからなくなってしまいました。ちょっと他のコードも調査してみます。
^^;
0205デフォルトの名無しさん
2009/08/09(日) 12:30:08ですね!正しくは、3を9に変えるか、3を消去するかですね。
float locationToPlane(float triangle[9], float againstLocation[3]) {
float normal[3];
triangleNormal(triangle, normal);
float A = normal[0] * triangle[0];
float B = normal[1] * triangle[1];
float C = normal[2] * triangle[2];
float D = A + B + C;
return DOT(normal, againstLocation) + D;
}
0206デフォルトの名無しさん
2009/08/09(日) 12:35:12> float D = A + B + C;
ここでそうするなら
> return DOT(normal, againstLocation) + D;
ここでは引け
0207デフォルトの名無しさん
2009/08/09(日) 12:38:38だね〜。
で、あとは例えば、
その関数locationToPlane()に、againstLocationとして3頂点のうち1点を渡してみて
ちゃんとゼロが変えればOKだね。
0208デフォルトの名無しさん
2009/08/09(日) 12:40:26しかし、>>205の問題ってGCC警告出してくれないんですもん。
0209デフォルトの名無しさん
2009/08/09(日) 12:45:490210デフォルトの名無しさん
2009/08/09(日) 13:39:46でも、typedefさえしないのけ。
typedef struct {
float x, y, z;
} point;
openglってこういうことしねーよな。実行速度なんて変わらんよ。
readabilityっていう概念0だな。
0211デフォルトの名無しさん
2009/08/09(日) 13:42:260212デフォルトの名無しさん
2009/08/09(日) 13:55:19けっきょく配列のindex使ってんだから、構造体使っても速度同じ変わらんって。
0213デフォルトの名無しさん
2009/08/09(日) 14:08:35標準化してもらってもいいかもね。
つーかboost::ublasが以外に使いやすいんでお勧め。
matrix4x4程度で速度が出るのかはわからんが。
0214デフォルトの名無しさん
2009/08/09(日) 14:55:16でもグラボ(OpenGL対応の)って、日本のメーカーもつくってんだからさ、
NECとか富士通(も?)、日本からこういう技術を発展させるような動きって
出てこないのかね。
東大を始め、CGの世界じゃ日本の研究機関ってプレーヤーでさえ無いんだよな。
0215デフォルトの名無しさん
2009/08/09(日) 14:58:24線形代数ライブラリは、CPUのベクトルユニットを使う/使わないの判断が
個々人に委ねられるというのも大きいし、標準化はし辛いんじゃないかな。
それに、頂点列やピクセルデータは単なるfloat(とかbyteとか・・・)の配列である。
っていうのがOpenGLのポリシーであるように感じられる。
自分で作っても大した規模にならないし、面倒なら>>3あたりやboost::ublasを使えばいいし
ってことで、今後も標準化は無いんだろーなーと。個人的にも必要性を感じない。
あー、京大の人のコメントは要りませんよ。
0216デフォルトの名無しさん
2009/08/09(日) 15:15:04CやC++専用じゃないんだし
0217デフォルトの名無しさん
2009/08/09(日) 15:47:20C用で、そこそこのパフォーマンスが出て、非GPLでとなると選択肢はほとんど無いのよね。
結局、
#define LOOP4(m) m(1) m(2) m(3) m(4)
#define LOOP44(m) \
m(1,1) m(1,2) m(1,3) m(1,4) \
m(2,1) m(2,2) m(2,3) m(2,4) \
m(3,1) m(3,2) m(3,3) m(3,4) \
m(4,1) m(4,2) m(4,3) m(4,4)
#define LOOP444(m) ……
みたいなマクロを定義して、
#define VEC_DEF_ITER(i) typedef GLfloat vec##i[i];
LOOP4(VEC_DEF_ITER);
#undef VEC_DEF_ITER
#define MAT_DEF_ITER(i, j) typedef GLfloat mat##i##j[i][j];
LOOP44(MAT_DEF_ITER);
#undef MAT_DEF_ITER
と自前で作っちゃった。
0218デフォルトの名無しさん
2009/08/09(日) 16:02:47だめだだめだ、そんなんreadabilityゼロだ。
日本はCGの世界ぢゃ、全然相手にされてないんよ。
俺、素粒子の物理屋だけどさ、欧米のCG関連の学会出てごらん。
日本の論文なんて引用ゼロに近いし、なんかsiigraphなんかでも通過してる
日本人研究者の論文ってほんとお情けで通してもらったってのがミエミエ。
ひどいよ、特に曲線曲面の理論発展には日本人の寄与度ゼロだと断言できる。
>>215京大もこの分野ぢゃ東大と同じく、プレーヤーでさえないよ。
物理畑じゃお互い世界で認められてるけどな。
0219デフォルトの名無しさん
2009/08/09(日) 16:05:570220デフォルトの名無しさん
2009/08/09(日) 16:09:320221デフォルトの名無しさん
2009/08/09(日) 16:12:460222デフォルトの名無しさん
2009/08/09(日) 16:14:21GLには哲学が無いよ。設計者がシリコングラフィックス社っていう、糞ベンチャーの
先駆けにいた三流エンジニアだからな。
抽象化のなんたるかが分かってねーし、設計っていう概念もないからフレームワーク化にまで
頭が回らないつーか、お粗末で頭が回転しない。
それで日本だが、こんな出来損ないの技術を信奉してる連中が拡大再生産されてる現状を俺は
憂う。別に京大を棚に上げるわけぢゃないが、東大をはじめ、CG関係の教育がマジ貧しい。特に
高等教育がぜんぜんだめだ。GL学生に教えてイェーイ、マテマティカ大金出して(国立だと税金)買って
線分画面にさせるスクリプト学生に書かせただけで(しかも2Dで)イェーイなんての
ばっかだ。
CGの分野じゃ日本は完敗よ。数学力の問題だとネラどもは言うかもしらんが、そうじゃないんだ。
設計っていうのはな、つまるところ哲学・抽象的思惟能力に左右されるんだ。
物理屋の俺に指摘されてもハッとこない連中、特にNECやSCE、富士通、あと
ジャパネットたかたあたりで細々と開発してる連中、おまえらはプレやーでさえない。
0223デフォルトの名無しさん
2009/08/09(日) 16:16:16boost::ublasって固定長ベクトルできないよね? なんか無駄しちゃってる気がするんだよね。
0224デフォルトの名無しさん
2009/08/09(日) 16:17:370225デフォルトの名無しさん
2009/08/09(日) 16:19:16いや、物理屋に言わせるとさ、日本のCG関連の技術者・研究者、税金ドロボー
してんぢゃねーっつぅの!!!
まじで。
研究でCG関連の技術俺等も使うこと、多いんだけどさ、お前等マジ何してんだよ
って感じぃ。
0226デフォルトの名無しさん
2009/08/09(日) 16:27:363次元ベクトルは自作したのを使ってる。
0227デフォルトの名無しさん
2009/08/09(日) 19:23:11遊んだりしています。その過程で、グラフィック関係の記事やblogを見
てシェーダーというものがあるのを知りました。私はこれも興味をひか
れているですが、ネット上の記述や説明では私には理解できません。
シェーダーとは何のためにあり、どんなことができるのでしょう?
OpenGLでコードを描くよりも優れているのでしょうか?
0228デフォルトの名無しさん
2009/08/09(日) 19:37:57調べたら普通に概念程度ならわかる気がするけど。
簡単に言えば、シェーダーを自前で書かない場合はOpenGL標準のライティングでしか絵を表現できないけど、シェーダーを自分で書くことによって自分好みのライティングにできる。(←これをプログラマブルシェーダーと言う。)
OpenGLに対応するシェーダーとしてはGLSL等があって、それらはOpenGLと組み合わされるものであって単独で何かができるものではない。
ここではライティングについて言ったけど、実際にはシェーダーの応用で2次元・3次元ともに様々な表現ができるようになる。
0229デフォルトの名無しさん
2009/08/09(日) 19:40:37床井先生のところでバンプマッピングを静止画で出してたのは、あんま意味ないかなと思った。
「どの方向に光源があってもそれっぽいテクスチャが付く」ことが技術の肝だから、
光源に対して物体を動かしたときにこそ質感に大きな差が出るんだけどね。
0230デフォルトの名無しさん
2009/08/09(日) 20:15:23まず、OpenGLのパイプラインアーキテクチャは分かるかな?
バーテックスシェーダは、「頂点単位の座標変換とライティング計算」を一般化したもの、
フラグメンテシェーダは、「フラグメントに対するテクスチャ適用」ステージを一般化したもの
なんだけど、上の括弧書きした部分が何を言ってるのか分からないようだと、シェーダの利点を
挙げても、???って感じになっちゃうと思う。
0231デフォルトの名無しさん
2009/08/09(日) 20:21:00C以外でも使えるよう十分に低レベルなAPIにしたら、
逆にJavaでそのままのカタチでは使えなくなってしまったという罠ww
難しいもんだねぇ‥‥
あと放ったらかしになってる>>193
なんらかのHTMLレンダラで絵を作るとこまでいけば、それをテクスチャにして表示できますよ
‥‥ってもしかしてGLでHTMLのレンダリングそのものをやりたいって話?
0232デフォルトの名無しさん
2009/08/09(日) 21:21:21画面描画の際に勝手に動いているって解釈で会っていますか?
0233デフォルトの名無しさん
2009/08/09(日) 21:39:14大体合ってるw
VSなら頂点一つずつ、FSならフラグメント一つずつごとに、
同じシェーダがそれぞれ動作するよ
0234デフォルトの名無しさん
2009/08/09(日) 22:00:09ありがとうございます。
OPENGL ESで画像を表示しようとしたらglDrawPixelsが
サポートされてなくて困っています。
だれか解決案を教えて頂けませんか。
0235デフォルトの名無しさん
2009/08/09(日) 22:02:030236デフォルトの名無しさん
2009/08/10(月) 01:19:06>>230
ありがとうございます。ただ、正直???てな感じです。赤本読み直します。
0237デフォルトの名無しさん
2009/08/10(月) 01:21:49むしろ、ESでないとしても、同じ画像を何回も表示するならテクスチャに貼ってVRAMにキャッシュしておくこと推奨だよな。
Orthoに戻すのが面倒ではあるが。
0238デフォルトの名無しさん
2009/08/10(月) 03:33:56バンプの意味は「どの方向に光源があっても」じゃなくて、
「張られた面がどの方向を向いていても」それっぽい影がつくってことだと思うけど。
だから静止画でも立体に張ってれば効果はよくわかるからいいじゃんよ。
0239デフォルトの名無しさん
2009/08/10(月) 09:14:27発展して視差遮蔽マッピングになってしまうけどDirectX SDKのサンプルにわかりやすいのがあったな。
OpenGLとしてもOpenTKのフォーラムに視差遮蔽マッピングのサンプルがあった。
0240デフォルトの名無しさん
2009/08/10(月) 09:34:450241デフォルトの名無しさん
2009/08/10(月) 20:33:34発送予定日が23日になったとかメールが来た。
夏休みに読もうと思ってたのにkonozamaかよ。
0242デフォルトの名無しさん
2009/08/10(月) 21:32:46VRAMにキャッシュ?!
mallocのことでしょ?
なんか特別な操作するの?
0243デフォルトの名無しさん
2009/08/10(月) 22:17:00Depthしか使わない場合のFBOの設定の仕方が書いてありますが、
逆にColorしか使わないときはどうするんですか?
GeForce FXだとFBOは対応しているのにNPOTが未対応のようですが
これだと描画するときにテクスチャ座標の指定が面倒そうです
0244デフォルトの名無しさん
2009/08/10(月) 22:24:52ええー‥‥。
237さんの言ってること‥‥分からないですか??
0245デフォルトの名無しさん
2009/08/10(月) 22:47:32そんな意地の悪いこと言わなくても・・・
0246デフォルトの名無しさん
2009/08/10(月) 23:00:27ごめん、別にそういうつもりは無かったんだけど‥‥ちょっと、ビックリしちゃったもんで。
0247デフォルトの名無しさん
2009/08/10(月) 23:06:03glTexImage*()が何をするのかを全く理解していないようだから
しっかり赤本読んでおけ。
0248デフォルトの名無しさん
2009/08/10(月) 23:28:32木を見て森を見ずだ!
もっと視野ひろげようよ。
そんなどこのメモリに領域確保しようが、そんなこん抽象化して
使いやすくしとかんきゃ、そらもうAPIとして失格なんよ。
まぁ、OpenGL作った連中に頭が上がらんのが殆どだからな。
東大を始めCG関連、日本の技術は貢献度ゼロだ。よっておまえらの
程度が低いのも当然だな。
設計が何かってわかってないよ、設計とは何かが。
0249デフォルトの名無しさん
2009/08/10(月) 23:40:06>>1を読め。荒らしはお断りです。
0250デフォルトの名無しさん
2009/08/10(月) 23:43:36だからー。おかしな人に触れちゃダメだってばー。
どうせ何言っても無駄なの分かってるでそ?
0251デフォルトの名無しさん
2009/08/11(火) 00:42:520252デフォルトの名無しさん
2009/08/11(火) 00:46:46こいつが一番頭がおかしい
0253デフォルトの名無しさん
2009/08/11(火) 07:47:34小学校の夏休みが終わるまでしばらくこんな感じか。
0254m9('v`)ノ ◆6AkAkDHteU
2009/08/11(火) 21:41:28おまえら、結局思想的に、つーか哲学がねぇんだよ。
だからOpGLをありがたーく使ってりゃいいんだよ。
まぁ、NECや富士通の技術者なんてこの程度かこれ以下
なんだろうなw
哲学がねーよ、哲学が。
0255デフォルトの名無しさん
2009/08/12(水) 01:25:110256デフォルトの名無しさん
2009/08/12(水) 07:39:150257デフォルトの名無しさん
2009/08/12(水) 07:40:00ごめんなさい
マウスで中の→マウスで描画領域の中の
です
0258デフォルトの名無しさん
2009/08/12(水) 07:50:240259デフォルトの名無しさん
2009/08/12(水) 14:49:32私は使ったことないけど
0260デフォルトの名無しさん
2009/08/12(水) 15:12:40セレクションを使うけど、シーン内のオブジェクト全体をを回転/移動/
スケーリングしたいだけなら、virtual trackballが便利。適当にググれば
コードでも数式でも出てくると思う。
0261デフォルトの名無しさん
2009/08/12(水) 18:08:59256-257からどっちの意味なのか読み取れないからメンドクセと思って
私はレスしなかったけど、あなたは親切だねぇ。
(ちょっと話それますよ)
セレクションて最初はすっごい便利なんだけど、段々アプリが成長して
構造が込み入ってくると、そのうち限界がくるんだよね。
そうなるとシーングラフが欲しくなってくる。というかシーングラフってほとんど
ピック処理とか当たり判定だけのために欲しい。(描画だけならSGイラネw)
‥‥が、シェーダ流行な昨今、シーングラフはバーテックスシェーダと相性が悪い。
(gl_Position = ftransform(); なシェーダなら問題無いですけど)
その辺うまくやってる方っていらっしゃいます?
当たり判定用オブジェクトは表示データとは別、って割り切るしか無いのかなぁ。
0262デフォルトの名無しさん
2009/08/12(水) 18:28:23思ってるんだけど、あってる?
そういう考えで、「openglレベルなら」って書いたんだけど。
0263デフォルトの名無しさん
2009/08/12(水) 18:42:17>ピッキングの実装にセレクションが使われるもの
ピッキングの実装にセレクションを利用することができる、という意味では合ってるし、
ピッキングの実装にセレクションを利用する必要は無い、という意味では間違ってるかな。
>>259の書き方には特に問題無いと思うます。
0264デフォルトの名無しさん
2009/08/12(水) 19:27:53レスありがとう。
よく分かった。
0265デフォルトの名無しさん
2009/08/13(木) 17:02:01glutFullScreenでフルスクリーン化をしているんですが、
メインディスプレイでフルスクリーン化してしまいます。
サブディスプレイでフルスクリーン化したいのですがどのような方法がありますか?
0266デフォルトの名無しさん
2009/08/13(木) 18:36:47FindWindow()かなんかでウィンドウハンドルをとってきて
SetWindowLongとかSetWindowPosで枠無しにしてサブディスプレイのフルスクリーンに合わせる
サブウィンドウのサイズはEnumDisplayMonitors()で拾ってこれるみたい
検証してないんでglutの内部で持ってるウィンドウ情報と実際のウィンドウがずれるからなんか問題おきるかも
大丈夫な気もするけど
0267デフォルトの名無しさん
2009/08/13(木) 23:58:10AndroidにはglRenderMode()がなくて、セレクションとか
フィードバックが使えないみたい。
OpenGL ESの1.0とか1.1ぐらいだと、
ピックアップする方法ってみんなどうやってるの?
0268デフォルトの名無しさん
2009/08/14(金) 04:12:53おお、検証してみます
ありがとうございます
0269デフォルトの名無しさん
2009/08/14(金) 10:38:02ピックは本来GLと関係無い処理なので、純粋に幾何学計算で交差判定をします。
一応、オブジェクトごとに固有の色(IDの代わり)でレンダリングしてglReadPixels()する
という方法も無いではないけど‥‥。
0270デフォルトの名無しさん
2009/08/14(金) 11:03:47その中でglGenLists(a)を呼び出すと常に0が返ってきて
しかもプログラムが落ちるという現象が起こってるんですが、
DLLだとopengl32.dllのスタティック領域にアクセスできないとかなんでしょうか?
0271270
2009/08/14(金) 11:27:57class APIENTRY model
{
private:
GLuint id;
public:
model()
{
id = glGenLists(1);
//常時0
//wglコンテキストを呼んでいる場合エラー落ちする
}
~model()
{
glDeleteLists(id,1);
}
void render()
{
glCallList(id);
//描画されず
}
void modeling(...){...}
};
0272デフォルトの名無しさん
2009/08/14(金) 12:15:460273デフォルトの名無しさん
2009/08/14(金) 12:29:03全然要所になってないぞ。どこでそのクラスをインスタンス化しているかが重要。
まさかMakeCurrentもせずにやってるとか言わないよな?
0274270
2009/08/14(金) 12:52:34int main()
{
using namespace std;
GLuint hoge = glGenLists(1);
cout << (unsigned int)hoge << endl;
cout << glGetError() << endl;
};
としたところ、hoge=0、エラー=1282でした。
Vistaのopengl32.dllが悪いんでしょうか。。。
>>272
エラーを調べたところなぜかGL_INVALID_OPERATION(1282)が返ってきました・・・。
>>273
Listを使わず直接描画させた場合は正しく描画できましたので、
デバイスコンテキスト/ピクセルフォーマット設定/レンダリングコンテキスト/コンテキスト関連付け等は
とりあえずあってると思います。
0275デフォルトの名無しさん
2009/08/14(金) 12:55:51全然分かってないな。コンテキストが無いとdlistは作れない。
0277デフォルトの名無しさん
2009/08/14(金) 14:09:34当たり前だー!
って感じなんだけど、初心者的には結構罠だったりするね
そしていまだに、たまにやらかす俺様もダメぽorz
0278デフォルトの名無しさん
2009/08/14(金) 17:45:25ベクトル型変数への加算をfor文で行ってたら、
シェーダプログラムが落ちちゃうんですが
仕様なんでしょうか?
以下のエラーメッセージが表示されます。
Expression: ("Buffer too small", 0)
ループの回数を減らすと落ちないんですが・・・
0279デフォルトの名無しさん
2009/08/14(金) 18:50:02デバッグすればいいじゃない
0281デフォルトの名無しさん
2009/08/14(金) 20:36:150282デフォルトの名無しさん
2009/08/14(金) 20:55:290283デフォルトの名無しさん
2009/08/14(金) 23:49:14共有しているはずなのに、
テクスチャの更新を行うとき有効になっていたコンテキストによって
glTexSubImage2Dが失敗するのは何故だ、と思っていたら
テクスチャのクラスで、glTexSubImage2Dする前にglBindTextureするのを忘れていた
のが原因だった。これのせいでどれだけ時間を無駄にしたか・・
0284デフォルトの名無しさん
2009/08/16(日) 22:12:05・OpenGLの拡張が使えない古いPCでも動く(どんな環境でも動作する)
・ウィンドウが表示されていなくても使用可能
なもので、いい方法はないでしょうか。新しめのPCだったら間違いなくFBOを使っているんですが。
glReadPixelsは後者を満たせないようなので無理です。
glCopyTexImage2Dでオフスクリーンレンダリングが出来るというのはどう言う事なんでしょうか?
147 名前:デフォルトの名無しさん[sage] 投稿日:2008/11/08(土) 21:19:41
・PFD_DRAW_TO_BITMAP
・glReadPixels
・glCopyTex[Sub]Image2D
・pbuffer拡張
・render texture拡張
・FBO(Frame Buffer Object)拡張
・PBO(Pixel Buffer Object)拡張
0285デフォルトの名無しさん
2009/08/16(日) 23:26:04普通glReadPixelsやCopyTexSubImage*はオフスクリーンレンダリングとは
言わないな。
FBOが理想だけど、それがサポートされていないような古いカードでもpbuffer
はサポートしていることが多い。それすらサポートしてないならAUXバッファを
使うけど、そんな古いカード/ドライバだとアクセラレーションが効くかどうかも
怪しいな。
render to texture拡張はFBOが出る前はWindows上で流行ったけど他の環境では
サポートれない場合が多い。
PFD_DRAW_TO_BITMAPはWindows専用、X上だとglxCreatePixmap()でOpenGLレンダリング
可能なPixmapを作成可能だが、少なくともXの場合はハードウェアレンダリングに
ならない。
0286デフォルトの名無しさん
2009/08/16(日) 23:48:39マウスで動かせるんだけどなー
0287デフォルトの名無しさん
2009/08/17(月) 00:35:09突き詰めればOpenGLの初期化手段が環境に依存するし
GLUTとかクロスプラットフォームのライブラリを使えば必ずウィンドウがおまけで付いてくる。
ある程度あきらめるか、複数の実装をコンパイルタイムとランタイム両方で切り替えるか、
要件満たしてない環境ではMesa使って下さいってことにするしかないよ。
>>285
> 普通glReadPixelsやCopyTexSubImage*はオフスクリーンレンダリングとは
言わないってことはないよ。バックバッファに書いてスワップせずにコピーするんだから。
0288デフォルトの名無しさん
2009/08/17(月) 03:56:59組み方がわかりません。
あとものを上下に動かすプログラムを教えてください。
0289デフォルトの名無しさん
2009/08/17(月) 04:13:150290デフォルトの名無しさん
2009/08/17(月) 07:13:090291デフォルトの名無しさん
2009/08/17(月) 20:17:300292284
2009/08/17(月) 22:36:40あまり古い環境ではあきらめる事にします。Mesaなんてのがあるのは初めて知りました。
FBOがサポートしていなかったらpbufferとかを使うことにします。
ありがとうございました。
0293デフォルトの名無しさん
2009/08/17(月) 22:45:440294デフォルトの名無しさん
2009/08/17(月) 22:49:01何をしたいかというと、自分のプログラムに
他の人が作ったプラグインを使って拡張できる機能を付けたいんです。
でもそうしようと思うと、glEnable/Disableや行列の設定を変えたりしたせいで、次のプラグイン
の処理に影響が出ないようにする必要があります。初めはディスプレイリストを共有して
やろうと思っていたんですが、コンテキストの切り替えが思ったより高コストで無理でした。
20回ぐらいで10FPS程度に落ちます。
なので、Singletonを使い1つのコンテキストを全てのプラグインで共有するようにしようと思ったんですが、
レンダリングステートを保存/復元するプログラムを作ろうにも、
レンダリングステートを設定する関数が多すぎて把握し切れません・・・。
何か良い解決策はないでしょうか。
0295デフォルトの名無しさん
2009/08/17(月) 22:54:020296デフォルトの名無しさん
2009/08/17(月) 23:10:11なるので真面目にやるならコンテキストのラッパをプラグインに渡す
手を抜くならglPushAttribじゃね
0297294
2009/08/17(月) 23:17:55MANページでPushで検索してみたら
glPushAttrib
glPushClientAttrib
glPushMatrix
glPushName
があるようですが、Nameはセレクションモード?で使うようなので使うのは上の3つだけですね。
0298デフォルトの名無しさん
2009/08/17(月) 23:23:25「みんなのコンテキストです。変更した設定は元にもどしておいてください。」
って書いておけばいいんじゃね
0299デフォルトの名無しさん
2009/08/17(月) 23:39:530300デフォルトの名無しさん
2009/08/18(火) 00:13:41それは腐ったプラグインのデバッグやるはめになる死亡フラグだろ・・・
0301デフォルトの名無しさん
2009/08/18(火) 01:13:180302デフォルトの名無しさん
2009/08/18(火) 10:27:10Listでモデルとライティングは呼べる事は確認できたんですが
カメラ座標をListで登録して呼べないですかね?
0303デフォルトの名無しさん
2009/08/18(火) 10:47:26glMatrixMode切り替え忘れてるんじゃない?
0304302
2009/08/18(火) 10:58:17登録
glMatrixMode(GL_PROJECTION)→glGenLists(...)→glNewLists()
→カメラ設定云々→glEndLists()
呼び出し
glMatrixMode(GL_PROJECTION)→glCallList(...)
のような形になるのでしょうか?
あとそれで思ったのですが、もし登録時に
glGenLists(...)→glNewLists()→glMatrixMode(GL_PROJECTION)
→カメラ設定云々→glEndLists()
とすれば、glCallList時にglMatrixMode()の切り替えが必要なかったりします…?
0305デフォルトの名無しさん
2009/08/18(火) 11:29:48登録時のアトリビュートがどうこうとかは関係ないよ。
特定の行列を変更したいならディスプレイリストの中でglMatrixModeを呼び出せばいい。
0307デフォルトの名無しさん
2009/08/19(水) 02:58:290308デフォルトの名無しさん
2009/08/19(水) 03:21:420309デフォルトの名無しさん
2009/08/19(水) 10:28:540310デフォルトの名無しさん
2009/08/19(水) 18:43:510311デフォルトの名無しさん
2009/08/19(水) 19:14:310312デフォルトの名無しさん
2009/08/19(水) 19:16:03そもそもの質問内容からして馬鹿過ぎるし
0313デフォルトの名無しさん
2009/08/19(水) 19:23:08マジで助けて・・・
0314デフォルトの名無しさん
2009/08/19(水) 19:51:100315デフォルトの名無しさん
2009/08/19(水) 19:52:24プログラマブルシェーダを使って、
指定した画像のエッジ強調などの処理を行っているのですが、
画像処理の結果を画面に描画しないことは可能でしょうか。
プログラマブルシェーダは画面描画契機で動作するので、
描画無しでプログラマブルシェーダによる画像処理は
不可能と考えているのですが・・・。
0316デフォルトの名無しさん
2009/08/19(水) 20:22:15簡単な方法としては、フレームバッファをスワップしなければ、描画結果は画面に出ないでしょう。
もっといいのは、Frame Buffer Objectを使う方法ですが。
ただ、「描画無しで」プログラマブルシェーダを動かすのは無理ですけどね。
描画しても画面に出さなければいいわけで。
0317デフォルトの名無しさん
2009/08/19(水) 20:26:24どのへんがですか?
0318デフォルトの名無しさん
2009/08/19(水) 20:33:16それが判らないなら君はこのまま一生掲示板で誰にも答えてもらえない人生を送るだけだから。
0319デフォルトの名無しさん
2009/08/19(水) 20:35:06これこれこういことをやりたくて、こういう環境でこういうふうにやってみました。だけど、これがこうなって、こうなります。
ここを参考に、ここをこうしてみて、こうなることを期待したのですが、こういう症状がおきます。
どこかやりかたがまずいのでしょうか?
0320デフォルトの名無しさん
2009/08/19(水) 20:38:58無理なので、ポリゴンを分割してください。
あるいはGL_DECALとかでテクスチャを貼って、不要な部分はテクスチャの
アルファを0にしておけばそれらしく見えるかも。
0321デフォルトの名無しさん
2009/08/19(水) 20:40:12ありがとうございます。
esCreateWindowでウィンドウを作成した上で
描画しないとプログラマブルシェーダを動かすのは無理そうすね。
0322デフォルトの名無しさん
2009/08/19(水) 20:49:17なるほど、そういうことですか。
あんまり書き込みとかしてこなかったんで・・・すいません。
>>320
ありがとうございます。やってみます
0323デフォルトの名無しさん
2009/08/20(木) 21:58:17BMPファイルに出力なんてことを考えているんですが、
glreadpixelsで取ってこれるフレームバッファの情報は
ウィンドウに表示されている画像っで認識合っていますか。
ウィンドウを非表示にしている場合はglreadpixelsを使っても
動作しないという認識で合っていますか。
0324デフォルトの名無しさん
2009/08/20(木) 22:10:130325デフォルトの名無しさん
2009/08/21(金) 01:11:40GLMatrix.hの
> inline T cofactorm13() const { return cofactor_maker(m2,m7,m8, m3,m4,m10, m10,m6,m11); }
は
> inline T cofactorm13() const { return cofactor_maker(m2,m7,m8, m3,m4,m10, m0,m6,m11); }
が正しい。逆行列で妙な値を出すからおかしいと思ったらまったく。
最新版ver.はconfigureやMakefile使えって書いてあるのに付いてないし
0326デフォルトの名無しさん
2009/08/21(金) 01:14:530327デフォルトの名無しさん
2009/08/21(金) 02:31:17半島人はお帰り下さい。
0328デフォルトの名無しさん
2009/08/21(金) 04:36:45そんだけ使われて無いってことかも。自作したクラスライブラリを使ってる人も多いだろうし。
あと逆行列を求めたい時って実際には正規直行だったりすること多いし
フォーラムだと9も間違ってるってあるけどどうなんかね
http://sourceforge.net/forum/message.php?msg_id=6117876
0329デフォルトの名無しさん
2009/08/21(金) 06:00:499も間違ってるね。
0330デフォルトの名無しさん
2009/08/21(金) 16:43:39トランプみたいな板があって裏表に違うテクスチャを張りたいのですが
この場合表用、裏用の2つのポリゴンを用意しなければ行けないのでしょうか?
0331デフォルトの名無しさん
2009/08/21(金) 19:26:34そのとおりです〜
0332デフォルトの名無しさん
2009/08/24(月) 12:43:17どうすればいいでしゅか?
0333デフォルトの名無しさん
2009/08/24(月) 13:22:58次にその仕様に従ってデータを読み込むプログラムを書きます
最後に読み込んだデータをOpenGLで描画します
0334デフォルトの名無しさん
2009/08/25(火) 02:07:230335デフォルトの名無しさん
2009/08/25(火) 04:53:55wavefront objにexportして、GLUTについてるsmoothっていうdemoの入力にすれば表示される
遅くてもいいからとりあえず表示したい時ならばだけど
0336デフォルトの名無しさん
2009/08/25(火) 11:18:14ありが�d
0337デフォルトの名無しさん
2009/08/25(火) 12:21:060338デフォルトの名無しさん
2009/08/25(火) 12:40:37レスが欲しければ少し頭をひねれ
0339デフォルトの名無しさん
2009/08/25(火) 21:57:30いや、俺もいい回答だと思うよ。実に論理的だし何も間違ってない。
0340デフォルトの名無しさん
2009/08/25(火) 22:02:58質問者が望んでいない形、(第三者にとって)情報としても価値ない
そんな回答にも見えるがね。
0341デフォルトの名無しさん
2009/08/25(火) 22:42:40まあ楽したいなら普通はOpenSceneGraphとかを使えと思う。
0342デフォルトの名無しさん
2009/08/25(火) 23:07:02実際のところ>>333程度のことすら理解できてないんじゃないかって気もする。
なんか関数一発で表示できるとでも思ってるんじゃないかと。
0343デフォルトの名無しさん
2009/08/25(火) 23:47:290344デフォルトの名無しさん
2009/08/25(火) 23:47:42「適当なローダかラッパのライブラリはありませんか」と聞くことだろうな。
0345デフォルトの名無しさん
2009/08/26(水) 07:35:42質問者が望んでいないかどうか良く分かるね
情報としての価値が無いのはあなたにとっての話しでしょ、初心者には有益な情報だと思います
0346デフォルトの名無しさん
2009/08/26(水) 10:28:050347デフォルトの名無しさん
2009/08/26(水) 10:32:49なまけものめ
0348デフォルトの名無しさん
2009/08/26(水) 13:32:10そもそも非推奨じゃなかったか?
仕様書とかもなかったような
0349デフォルトの名無しさん
2009/08/27(木) 20:08:430350デフォルトの名無しさん
2009/08/27(木) 22:18:34立体図形の中を上下左右自由に行き来できるようにしたのですが(OpenGLで)、
衝突判定がどうしてもできないで困っています。
すべての三角形のデータでメッシュを構成してあって、視点移動が起きた時に
移動の前後で三角形に衝突したどうかを調べてます。
まだ素人なので衝突しているはずがない三角形についても衝突判定をしています。
みなさん、衝突判定のために立体データはグループ分けみたいなことをされてるん
でしょうか?
もう三次元モデルのファイルを作り上げてしまったので、グループ分けしないで
衝突判定するには全てのメッシュについて判定を行うしかないのかと悩んでます。
じょうずなアルゴリズムをご存じのかた、どうかご指導を。 <(__)>
0351デフォルトの名無しさん
2009/08/27(木) 22:55:390352デフォルトの名無しさん
2009/08/27(木) 23:15:320353デフォルトの名無しさん
2009/08/27(木) 23:18:10>>351って最低だな
0354デフォルトの名無しさん
2009/08/27(木) 23:27:080355デフォルトの名無しさん
2009/08/27(木) 23:46:44> 衝突判定がどうしてもできないで困っています。
矛盾してるな
0356デフォルトの名無しさん
2009/08/28(金) 02:10:16分かってるくせに
0357デフォルトの名無しさん
2009/08/28(金) 08:09:38迷路ゲームみたいにカメラが動くだけで物体は固定の場合もあれば、
群集やパーティクルみたいに大量の物が動きまくって判定しないといけない場合も。
どうしてますか?って聞かれれば、ケースバイケースで、うまいことやってますとしか答えられないような
0358デフォルトの名無しさん
2009/08/29(土) 06:44:440359デフォルトの名無しさん
2009/08/29(土) 17:31:290360デフォルトの名無しさん
2009/08/29(土) 20:24:55「長渕剛にだったら喧嘩余裕で勝てるよ」って他で書いたら
めちゃくちゃな反応されてたもんで。
先ずむかつくのが>>358だな、馬鹿丸出しだし。
>>351については木黄山強に顔射でもされるといいよ。
つーか、役に立たんな2chは・・・
0361デフォルトの名無しさん
2009/08/29(土) 20:41:550362デフォルトの名無しさん
2009/08/29(土) 20:42:410363デフォルトの名無しさん
2009/08/29(土) 20:48:060364デフォルトの名無しさん
2009/08/29(土) 20:48:580365デフォルトの名無しさん
2009/08/29(土) 20:54:290366デフォルトの名無しさん
2009/08/29(土) 21:20:58そういえば夏も終わりだねぇ
0367デフォルトの名無しさん
2009/08/29(土) 22:56:40俺も衝突判定については、何年も悩んで
試行錯誤を重ねた。
それで、ひとつの解に辿り着いた。
それは、全然難しくない、
むしろ簡単、至極基本的な方法だった。
悩んだ自分にむかつくので教えませんが。
0368デフォルトの名無しさん
2009/08/29(土) 23:29:35自分の知識の再確認をする機会にはなったかも。
0369名無しさん@そうだ選挙に行こう
2009/08/30(日) 04:39:22是非教えてください。
0370名無しさん@そうだ選挙に行こう
2009/08/30(日) 13:21:51glBufferData
などのようにARBが後ろに付くものとそうでなものがありますが、機能的に
違いがあるのですか?
0371名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:22:41一部引数とか違うものもあったはずだが、覚えてないや
サポートされてるOpenGLのバージョンやらなんやらによって
どちらか片方しか使えない場合があるので、
可搬性を考慮するなら両対応しておきたい
0372名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:28:52両方あって、特に拘る必要がなければARBが無い方を使っといた方がいんでね?
0373名無しさん@そうだ選挙に行こう
2009/08/30(日) 15:43:38ARB→無印で仕様が変わることはほとんどないね。
0374デフォルトの名無しさん
2009/08/31(月) 02:05:07サポートできるグラボが増えていいと思っているが、そんな単純ではないのか?
glBufferDataに対応していれば、glBufferDataARBにも対応しているはずだよね?
0375デフォルトの名無しさん
2009/08/31(月) 08:11:310376デフォルトの名無しさん
2009/08/31(月) 08:19:58しているものについてはARBやEXT取って使えばいいよ。でないとキリがない。
どの機能がどのバージョンでARB拡張になってどのバージョンで標準入りしたか
は一度整理しておくと良いけど。
0377デフォルトの名無しさん
2009/08/31(月) 08:42:330378デフォルトの名無しさん
2009/08/31(月) 17:00:41glTexImage2DとかglNewList/glEndListなんかを
たくさん呼ぶのでそこで描画がもたつきます。
描画は止めたくないからglTexImage2Dとかだけ
描画とは別のスレッドで呼びたいんだけど、
エラーになってしまう。どうしたらいいのかな?
0379デフォルトの名無しさん
2009/08/31(月) 17:47:030380デフォルトの名無しさん
2009/08/31(月) 19:16:22もしたとえば1フレームに一枚テクスチャを作るとか決めると、
逆に余裕があるときにロードがどんどん早く進まなくてちょっと困るなあ……
そのへんうまく調節するように書いても、
複雑さが増すわりには根本的な解決にならないし。
普通の市販のゲームはどうやっているんだろう?
0381デフォルトの名無しさん
2009/08/31(月) 19:19:180382デフォルトの名無しさん
2009/08/31(月) 19:28:51たとえば「NowLoading」の文字が点滅してたりすると
NowLoading画面の時も描画は止められないんです。
その点滅が不規則で、どうやらロードの合間に適当に描画を挟んで
ごまかしてるっぽいゲームもあるけど、
もっとしっかりしたアニメーションをするNowLoading画面を出してるゲームもあって、
どうやっているのかな、と。
0383デフォルトの名無しさん
2009/08/31(月) 19:35:55glTexImage2Dだけメインスレッドでやれば軽いんじゃない
それか読み込み展開ルーチンそのものを細切れに動かせるように作るとか
0384デフォルトの名無しさん
2009/08/31(月) 19:49:45昔は割り込みでアニメさせてたりしたなー
0385デフォルトの名無しさん
2009/08/31(月) 20:09:38手元のプログラムはまさにそれになってけど、ときどきもたつく。
glTexImage2D や glNewList を細切れに呼び出すとロードが遅くなるし、
何よりコードが煩雑になるのが嫌で……
静止画でNowLoadingが一番シンプルだけど、ユーザにフリーズか?と思われるかもだから、
プログレスバー的な意味でも何かアニメーションしたいな
シンプルで根本的な解決策はないということかな
0386デフォルトの名無しさん
2009/08/31(月) 20:18:43プログレスバーを出すだけならFPSを一定に保つ必要は無いし簡単でしょ。
実際PCのゲームだとそういうのが多い感じ。
0387sage
2009/08/31(月) 20:21:18同じって考えていいの?
座標がどうなっているのか、本当に理解しにくい。
0388デフォルトの名無しさん
2009/08/31(月) 20:31:00だいぶちがうよ。
push/pop は変換行列の状態を保存しとくのだけど、
LoadIdentity は変換行列を単位行列にかえる。
popはpushしたときの状態に戻るのであって、いつも単位行列に戻るわけじゃないよ。
0389デフォルトの名無しさん
2009/08/31(月) 20:56:49以前やったゲームに、ロード画面で
キャラクターがCD-ROMを運ぶアニメーションをするのがあってさ。
ちゃんと一定のスピードで。そういうのがやってみたいんだ。
ロード画面ごときに、そこまで細かい演出しないゲームのほうが多いけど。
0390デフォルトの名無しさん
2009/08/31(月) 21:38:17どうもです。
glLoadIdentity()呼んだ直後でglPushMatrix()
って無意味なんでつね。
やっと分かったような。
0391デフォルトの名無しさん
2009/08/31(月) 21:42:310392デフォルトの名無しさん
2009/08/31(月) 21:54:41無意味ってわけじゃないよ。単位行列を保存しておきたいのならLoadIdentityの次にPushMatrix使うよ。
例えばオブジェクトA, Bって順番で描画するときにAにだけ変換行列かけたい場合に
LoadIdentity
PushMatrix
オブジェクトA描画
PopMatrix
オブジェクトB描画
ってな感じに使える。
0393デフォルトの名無しさん
2009/08/31(月) 21:55:570394デフォルトの名無しさん
2009/08/31(月) 22:45:30わかりやすいです、どうもありがとう!
0395デフォルトの名無しさん
2009/09/01(火) 06:06:44> オブジェクトA描画
LoadIdentity
> オブジェクトB描画
と等価だよな
0396デフォルトの名無しさん
2009/09/01(火) 13:31:39ありがと。
今日OpenGLのばぐ取りしてたら、以前ここで質問したことその
まま忘れてて、今やっとデバッグできた。
ここに居る連中すごいね、俺が数日かけてデバッグするのを
ちょっとみて「そこ[3]じゃなくて[9]だ」って指摘してたしな。
0397デフォルトの名無しさん
2009/09/01(火) 21:45:310398デフォルトの名無しさん
2009/09/02(水) 22:46:15サイズ512*512の24bitbmpをテクスチャとして正方形のオブジェクトに貼ろうとしているのですがうまくいかず
真っ白(オブジェクトの色)になってしまいます
64*64〜256*256の画像ではうまくいきます
複数の枚数のテクスチャを読み込んで複数のオブジェクトに貼ろうとしているのですが
例えば512*512の画像と256*256の画像を二つのオブジェクトに貼ろうとした場合
最初に512*512の画像をgentextureして続けて256*256の画像を同じようにしてそれぞれ貼り付けると両方とも真っ白になります
しかし順番を逆(256*256の画像をgentextureしてから512*512の画像をgentextureする)にすると前者だけうまく貼れて後者は真っ白になります
サイズの制約も守っているので理由がよく分かりません
分かる方よろしくお願いします
0399デフォルトの名無しさん
2009/09/02(水) 22:54:39旧型PS3:
Linuxインストール機能内蔵でPS3をPCとして使うことができる。
PPC Linux用の無料のソフトがいっぱい動く。
また、Cellの開発ツールも無料で入手できるので自分でCellのプログラムを作って実行させることができる。
ドルビーTrueHD、DTS-HDMAはリニアPCM変換で対応。
HDD〜80G。実勢価格30000円程度
薄型PS3:
Linuxインストール機能は除去された。
ブラビアリンク機能でブラビアと連動した電源のON OFFができる。
ドルビーTrueHD、DTS-HDMAのビットストリーム出力対応。
HDD120G。低騒音・発熱・消費電力。実勢価格29980円
0400デフォルトの名無しさん
2009/09/02(水) 22:54:54一応、確認。
glBindTexture()したあと、
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
は指定してる?
あとグラボの種類は?
0401デフォルトの名無しさん
2009/09/02(水) 23:17:02parameteriによる指定はしてます
対象のPCが手元に無いので詳細は今分かりませんが
nVidiaの古めのグラボ(AGP接続だったはずなので)です
0402デフォルトの名無しさん
2009/09/03(木) 22:32:48すいません
確認してきましたが違いました
GIGABYTEから出てるGeForce6600搭載のビデオカード(PCIーE接続)でした
0403デフォルトの名無しさん
2009/09/03(木) 22:34:42>>401
先にCAD(blenderか何か)でモデリングしてテクスチャー貼っておいて、
それをOpenGLのほうで読み込むっていう手法をとらないの?
0404デフォルトの名無しさん
2009/09/03(木) 23:45:47カメラ行列ってどうやって求めるんでしょう?
行列から角度もとめる関数は作ったものの肝心の行列がわからん。
参考サイトでもいいので教えてください。
0405デフォルトの名無しさん
2009/09/03(木) 23:57:160406デフォルトの名無しさん
2009/09/04(金) 01:24:56少し自分のやりたいこととは違ってしまうので
上記のようにテクスチャ作って貼り付けたいです
なぜ512*512の画像だと読み込めないのか原因も分かりませんし・・・
0407デフォルトの名無しさん
2009/09/04(金) 01:28:310408デフォルトの名無しさん
2009/09/04(金) 10:44:220409デフォルトの名無しさん
2009/09/04(金) 11:59:51ソースをupしないなら、あーじゃないのこーじゃないのってナゾナゾの域を出ないような
0410デフォルトの名無しさん
2009/09/04(金) 22:05:08作成:glGenTextures、glBindTexture、glTexParameteri、glTexImage2D
描画:glBindTexture、glVertex*、glTexCoord*、(glDraw*)
0411デフォルトの名無しさん
2009/09/04(金) 23:49:29http://qb5.2ch.net/test/read.cgi/saku/1184734722/259
saku:削除整理[レス削除]
http://qb5.2ch.net/test/read.cgi/saku/1240755818/163-164
0412デフォルトの名無しさん
2009/09/05(土) 03:12:49glPixelStorei(GL_UNPACK_ALIGNMENT, -);
が間違ってるとか、そんな気がする。
0413デフォルトの名無しさん
2009/09/05(土) 07:47:30glLoadIdentity();じゃ元通りにならないんだよね。orz
0414デフォルトの名無しさん
2009/09/05(土) 08:32:09色だけなら現在値を記録しておいて戻したときにglColor呼び出しても良いと思うけど
0415>>398
2009/09/05(土) 13:08:28ソースはここのプログラムのビットマップ読み込みの部分をそのまま使用しています
http://www.t-pot.com/program/69_medianfilter/index.html
CBitmapクラスを利用して読み込んで、呼び出した別クラスでは直後にtex_idでBindしてparametoriで設定しています
貼り付ける部分はこんな感じです。正方形を示す頂点vertex配列で作ったオブジェクトにテクスチャを貼り付けようとしています
tex1 = SBitmap::Load(texture2);
glBindTexture(GL_TEXTURE_2D, tex1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
〜〜〜〜
glPushMatrix();
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D , tex1);
glColor4fv(color);
glBegin(GL_QUADS);
glNormal3fv(normal[0]);
for (i = 0; i < 4; i++)
{glTexCoord2dv(texcoord[i]);
glVertex3fv(vertex[face[0][i]] );}
glEnd();
glDisable(GL_TEXTURE_2D);
glPopMatrix();
読みにくくてすいません。他に示すべきところがあれば補足します
0416デフォルトの名無しさん
2009/09/05(土) 13:27:280417デフォルトの名無しさん
2009/09/05(土) 13:37:34判断」するにはどうしたらよいのでしょうか?
glGetString(GL_VERSION) で取得したバージョンのメジャー番号が 2 のときは互換性
があると思いますが、3 以上のときは Deprecated があるのでバージョン番号だけでは
判断できないと思うのですが。
0418デフォルトの名無しさん
2009/09/05(土) 13:39:19ビットマップは8bitと24bitだけじゃない。
SOILとか使うと楽できるよ。http://www.lonesock.net/soil.html
glTexParameteriとglTexEnvfの呼び出し方でグラボによって表示されないことがある。
0419デフォルトの名無しさん
2009/09/05(土) 14:13:37Loadが返す値tex1が0では無いことはチェックしてる?
0420デフォルトの名無しさん
2009/09/05(土) 14:48:42Loadが返す値は0になってました
やはりCBitmapに問題があるんでしょうか?
>>415のソースは何か問題ありますか?
使う画像は24ビットbmpと制約をかけて使用しています
0421デフォルトの名無しさん
2009/09/05(土) 14:52:260025: int CBitmap::_CheckSize(unsigned int pict_size)
0026: {
0027: unsigned int i=2;
0028: const unsigned int TEX_SIZE = 256;
0029: unsigned int max_texture = TEX_SIZE*TEX_SIZE;
0422デフォルトの名無しさん
2009/09/05(土) 14:58:49サンプルが完璧だと思わない。
自作する気がなかったらライブラリと公開されていて、
みんなが動作確認してるものを使った方がいい。
0423デフォルトの名無しさん
2009/09/05(土) 14:59:420424デフォルトの名無しさん
2009/09/05(土) 15:09:49手元に環境と実際に試してるプログラムが無いので
曖昧なのですがその辺りは変更したような気がします
月曜に確認してみます
もしダメでしたら再度質問します
ありがとうございました
0425デフォルトの名無しさん
2009/09/05(土) 15:24:57glTexSubImage2Dを使えば2のべき乗じゃないサイズも使えるよ。
0426デフォルトの名無しさん
2009/09/05(土) 15:52:36最近プログラミングはできるけどデバッグはできない人って増えてきた気がする
0427デフォルトの名無しさん
2009/09/05(土) 21:54:04極論するとプログラムの技量は、どれだけデバッグ早くより完全にできるかの技量、と言える。
0428デフォルトの名無しさん
2009/09/05(土) 21:55:060429デフォルトの名無しさん
2009/09/05(土) 22:29:550430デフォルトの名無しさん
2009/09/06(日) 00:26:43最初からバグが混入しないようにするもよし、デバッグが早くなるように努力するもよし
0431デフォルトの名無しさん
2009/09/06(日) 00:35:49手順A->Bがうまくいかなかったら、まずAだけをテストするとかそういうレベル
0432デフォルトの名無しさん
2009/09/06(日) 00:40:240433デフォルトの名無しさん
2009/09/06(日) 02:31:14それはプログラミングできるって言って欲しくない。
プログラミングは正常に動作するまでデバッグの繰り返し。
プログラミングそのものがデバッグって考えてる人もいる。
できない人が増えてるのは、講義とか研究でプログラムを使う学生が増えたからじゃないかな。
0434デフォルトの名無しさん
2009/09/06(日) 03:26:280435デフォルトの名無しさん
2009/09/06(日) 03:40:190436デフォルトの名無しさん
2009/09/06(日) 08:21:380437デフォルトの名無しさん
2009/09/06(日) 22:37:53ありがとう!
色のリセットは、やっぱりglColor(1, 1, 1, 1);
がよさそうですね。
0438デフォルトの名無しさん
2009/09/07(月) 03:01:50下記のコードで変なところがないか指摘していただけるとありがたいです。
// 初期化部
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(1, &fbo_texture);
glBindTexture(GL_TEXTURE_2D, fbo_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE_EXT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE_EXT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
glGenFramebuffersEXT(1, &fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, fbo_texture, 0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
// 初期化部ここまで
0439デフォルトの名無しさん
2009/09/07(月) 03:02:49// テクスチャへの描画部
glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity();
glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity();
glPushAttrib(GL_VIEWPORT_BIT);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
glViewport(0, 0, 256, 256);
glMatrixMode(GL_PROJECTION); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW); gluLookAt(0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glColor4f(0.0f, 0.0f, 0.0f, 0.0f);
glBegin(GL_LINES);
glVertex3f(-100.0f, -100.0f, -100.0f);
glVertex3f(100.0f, 100.0f, 100.0f);
glEnd();
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
glMatrixMode(GL_MODELVIEW); glPopMatrix();
glMatrixMode(GL_PROJECTION); glPopMatrix();
glPopAttrib();
// ここまで
0440デフォルトの名無しさん
2009/09/07(月) 03:04:010441デフォルトの名無しさん
2009/09/07(月) 03:06:57glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, fbo_texture);
glColor4f(1.0f, 1.0f, 1.0f, 0.5f);
glBegin(GL_TRIANGLE_STRIP);
glVertex2f(0, 0);
glVertex2f(0, 1);
glVertex2f(1, 0);
glVertex2f(1, 1);
glEnd();
glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_TEXTURE_2D);
FBOテクスチャにレンダリングしたときのglClearColor(1,1,1,1)の色は
ここで反映されているんですが、描いたはずの直線が表示されません。
glClearColorを赤にすれば赤の四角が描画されるので、FBO自体は使えているようなのですが・・・。
0442439
2009/09/07(月) 03:08:16エラーチャックというとまずは
glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)でしょうか。
これは大丈夫でした。
0443デフォルトの名無しさん
2009/09/07(月) 03:15:230445439
2009/09/07(月) 03:30:11テクスチャ座標を指定したら正しく描画できました。
土日苦しんだ悩みが解決しました。
初歩的過ぎてすみませんでした。本当にありがとう!
0446デフォルトの名無しさん
2009/09/07(月) 11:42:300447デフォルトの名無しさん
2009/09/07(月) 12:09:21生成することができますが、glCompressedTexImage2D() の最後の引数に NULL を与
えた時も同じようにテクスチャオブジェクトを生成することはできるでしょうか?
0448デフォルトの名無しさん
2009/09/07(月) 17:52:08void display(int color[][3]){
int i,j,k=0;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
for(j=0;j<250;j++){
for(i=0;i<250;i++){
glColor3d(color[k][0], color[k][1], color[k][2]);
glVertex2d(i,j);
k++;
}
}
glEnd();
glFlush();
}
main(){
int color[250*250][3];
…
glutDisplayFunc(display(color));
…
}
と、同ウインドウ上にmainで指定した異なる色で点を描画したいのですが、
glutDisplayFunc(display(color))の引数が少ないといわれます。
解決策はありますか?
0449448
2009/09/07(月) 17:55:05main(int argc, char *argv[])
です。
0450デフォルトの名無しさん
2009/09/07(月) 17:59:180451デフォルトの名無しさん
2009/09/07(月) 18:29:12ここはコンパイルエラーの解決方法を聞く所ではない。
0452デフォルトの名無しさん
2009/09/07(月) 18:44:25そのレベルでやってるのか
>450
的確すぎる
0453デフォルトの名無しさん
2009/09/07(月) 18:55:02int g_color[250*250][3];
...
void display(void) {
int (*color)[3] = g_color;
...
}
main() {
...
glutDisplayFunc(display);
...
}
こんなのだろ
0455デフォルトの名無しさん
2009/09/08(火) 19:40:06背景に描くんじゃなくて、機体がちゃんと後ろに回り込めるようなモノ。
ビルボードとかだと後ろに回っても同じ絵だから変だし、
ttp://homepage3.nifty.com/ysflight/aircraftsoft/ss_ysflight/t4blue.png
みたいな白いカタマリはあんまりだ……
輪郭がぼやけた雲を描ける上手い方法解説したサイトとかないかな?
とりあえず固定パイプラインのみで。
0456デフォルトの名無しさん
2009/09/08(火) 20:10:59■ “光る小技”の疑似ボリュームパーティクルと疑似光散乱
を参照
0457デフォルトの名無しさん
2009/09/08(火) 20:12:00http://grmanet.sogang.ac.kr/results_rendering.html
http://www.gamedev.net/columns/hardcore/cloudrendering/
0458デフォルトの名無しさん
2009/09/08(火) 21:38:32そのへんのページ読んでみたら何となくわかってきたかも……
いわゆるパーティクルというやつで
ちいさいスプライトをたくさん描けばいいわけだな?
ちょっと実装してみるよ。実用に足る速度になるかわかんないけど
ありがと
0459デフォルトの名無しさん
2009/09/12(土) 00:00:14平行投影と透視投影を切り替えたいのですが、一度透視投影にした後は、
平行投影に戻せなくなります。
glMatrixMode(GL_PROJECTION)して、glFrustumすると何らかのパラメータが
設定されてしまうからと思ってますが。
0460デフォルトの名無しさん
2009/09/12(土) 00:12:390461デフォルトの名無しさん
2009/09/12(土) 00:30:290462デフォルトの名無しさん
2009/09/12(土) 00:35:45問題が再現する最小限のコードを張るなりどこかにアップロードしてリンクしろ
0463デフォルトの名無しさん
2009/09/12(土) 01:05:340464デフォルトの名無しさん
2009/09/12(土) 01:28:46ttp://www.dotup.org/uploda/www.dotup.org131192.cpp.html
pass:gl
です。Enterキーを押して、平行投影と切り替えたいのですが。
0465デフォルトの名無しさん
2009/09/12(土) 01:35:040466デフォルトの名無しさん
2009/09/12(土) 01:43:420467デフォルトの名無しさん
2009/09/12(土) 02:51:16なるほど、glOrthoやるときはGL_PROJECTIONしてからやる必要あるのね。
glOrtho使ったことなかったから知らなかったわ;
0468デフォルトの名無しさん
2009/09/12(土) 02:54:09{
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glMultMatrixd(rot);
・
・
void resize(int w, int h)
{
glViewport(0, 0, width = w, height = h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(mode == 1) {
gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0);
} else {
glOrtho(-2.0, 2.0, -2.0, 2.0, 0.0, 10.0);
}
glMatrixMode(GL_MODELVIEW);
}
で解決しました。ありがとうございます。
0469デフォルトの名無しさん
2009/09/12(土) 12:32:28そういう問題じゃないだろうw
プロジェクション行列を設定するならGL_PROJECTIONを指定しなさい。
glFrustumもglOrthoも、プロジェクション行列を生成する命令。OK?
0470デフォルトの名無しさん
2009/09/12(土) 13:15:490471デフォルトの名無しさん
2009/09/12(土) 13:38:31見た目わかりにくいライブラリがすべて悪い
0472デフォルトの名無しさん
2009/09/12(土) 15:02:110473デフォルトの名無しさん
2009/09/12(土) 17:26:330474デフォルトの名無しさん
2009/09/12(土) 17:29:540475デフォルトの名無しさん
2009/09/12(土) 21:16:07>せめて赤本には
皆さんって赤本は必携なの?
ネット上に赤本の初版が公開されてますが、あれではだめ?
もすこし手軽な入門書を紹介していただけませんか。
0476デフォルトの名無しさん
2009/09/12(土) 21:22:51と
手軽に覚えたい
は
相反する願望です。
てか赤本も腰据えて読めば手軽に感じるよ。
0477デフォルトの名無しさん
2009/09/12(土) 21:24:41これからはじめるなら。
0478デフォルトの名無しさん
2009/09/12(土) 21:31:51OpenGLの概要を理解するのに赤本が一番手っ取り早い。
読むにあたって敷居が高くもないと思うが。ウェブに置いてあるのは
OpenGL 1.1対応版だが、それで基本は押さえられるからいいよ。
第5章まで読んで、あとは必要に応じてで十分。
シェーダー関連は赤本だけじゃ足りないが。
0479デフォルトの名無しさん
2009/09/12(土) 21:35:06これから始めるならって事なら、固定機能パイプライン弄るだけの古いOpenGLの使い方覚えてもしょうがないと思うなあ
0480デフォルトの名無しさん
2009/09/12(土) 22:01:350481デフォルトの名無しさん
2009/09/12(土) 22:24:160482デフォルトの名無しさん
2009/09/12(土) 23:35:21一度3.0前方互換使うとあんなにデバッグしにくい代物使う気無くすよ。
0483デフォルトの名無しさん
2009/09/13(日) 00:11:35分岐の解決がコンパイル時かシェーダー内かって極端なんだよ
drawした時点で条件分岐を解決して命令をフラットに並べるというようなものが欲しい
0484デフォルトの名無しさん
2009/09/13(日) 02:17:22どこでダウンロードできるのでしょうか?
ググってたら1日が終わってしまいした・・・
0485デフォルトの名無しさん
2009/09/13(日) 02:35:160486デフォルトの名無しさん
2009/09/13(日) 08:48:12みんなありがとう、赤本ってエロ本と同じくらい大切なんでつね!
でも、みんなレベルが高すぎて結局シェイダーの話とか
パイプラインの話とかになってしまうんでつね・・・・
0487デフォルトの名無しさん
2009/09/13(日) 12:21:55四元数でつくった関節の可動域を制限したい場合、どんな計算をしたらよいでしょう?
0488デフォルトの名無しさん
2009/09/13(日) 12:25:163Dグラフィックスプログラミング
http://pc12.2ch.net/test/read.cgi/tech/1155153009/l50
3Dアルゴリズム全般
http://pc12.2ch.net/test/read.cgi/tech/1164171086/l50
0489デフォルトの名無しさん
2009/09/16(水) 19:53:23http://www.amazon.co.jp/OpenGL-SuperBible-Comprehensive-Tutorial-Reference/dp/0321498828/ref=sr_1_1?ie=UTF8&s=english-books&qid=1253098287&sr=8-1
かなり評価高いみたいなんだけど、日本語はないんだよね。
0490デフォルトの名無しさん
2009/09/16(水) 21:21:100491デフォルトの名無しさん
2009/09/17(木) 22:22:58最低の評価。
0492デフォルトの名無しさん
2009/09/17(木) 22:41:15amazon.comでは最近のは評価が低いな。昔の(1.4とか)は評価高いが。
0493デフォルトの名無しさん
2009/09/17(木) 23:11:12前調べたときの印象だから今は知らんが。
0494デフォルトの名無しさん
2009/09/18(金) 13:37:26そーでつかぁ・・・
0495デフォルトの名無しさん
2009/09/18(金) 13:52:40著者がOpenGL3.xのdeprecation modelに批判的だからな。
今年のSIGGRAPHで見かけたから聞いてみたらそんなこと言ってた。
まあ基本を押さえれば後はクイックリファレンス見る程度で十分だとは思う。
0496デフォルトの名無しさん
2009/09/18(金) 21:22:29窓以外の環境で使ってる人にはお勧めできない
0497デフォルトの名無しさん
2009/09/19(土) 02:20:09あと Android 本とかが OpenGL ES を使って携帯で 3D やってる:
http://pragprog.com/titles/eband/hello-android
0498デフォルトの名無しさん
2009/09/19(土) 10:31:470499デフォルトの名無しさん
2009/09/19(土) 10:36:03> ESならそれ用の本が別にあるだろ
たとえば?
0500デフォルトの名無しさん
2009/09/19(土) 10:45:34とか
0501デフォルトの名無しさん
2009/09/19(土) 13:47:29それ、プレステ開発用のOpenGLバージョン1.1じゃなくて、2.0の説明
なんだよな。
赤本に文句付けるとすれば、やっぱどこ?
俺はESの説明箇所が少な杉だってことだけど、2ch代表して苦情
出しとこか。
0502デフォルトの名無しさん
2009/09/19(土) 13:53:410503デフォルトの名無しさん
2009/09/19(土) 20:29:510504デフォルトの名無しさん
2009/09/19(土) 20:55:22>>501は阿呆の2ch代表
500ごめん
0505デフォルトの名無しさん
2009/09/20(日) 23:44:030506デフォルトの名無しさん
2009/09/21(月) 11:53:220507デフォルトの名無しさん
2009/09/21(月) 23:16:460508デフォルトの名無しさん
2009/09/22(火) 20:29:03やめとけ、京大院生だぞ、相手は。お前等にゃちと倒せんよw
0509デフォルトの名無しさん
2009/09/22(火) 20:41:40相当に頭の悪いというか、よくもまあそんな幼稚な発言を平気で出来るなあ・・・。
こんな馬鹿なレスされたら、逆に笑えないな・・・。
0510デフォルトの名無しさん
2009/09/22(火) 21:21:460511デフォルトの名無しさん
2009/09/23(水) 09:27:340512デフォルトの名無しさん
2009/09/23(水) 11:16:42APIではどうやって渡されるポインタをheadとする列の終端を探知してるんですかね?
座標の数、それを表す型(のサイズ)、ストライドだけじゃ
もう一つそのポインタで表現されている列に含まれる頂点の数ってのが判ってないと
終端がわからずに範囲外までいっちゃうと思うんですが
0513デフォルトの名無しさん
2009/09/23(水) 11:32:08glDrawArrayやglDrawElementsに渡したインデックスが範囲外だったら、素直に範囲外まで行って落ちちゃう
0515デフォルトの名無しさん
2009/09/23(水) 17:05:550516デフォルトの名無しさん
2009/09/24(木) 16:13:45glutMainLoop()以外のOpenGLの関数をmain関数以外で呼び出したら
再描画ができなくなるとか、そういったものはあるのでしょうか?
0517デフォルトの名無しさん
2009/09/24(木) 16:51:29ただし glutCreateWindow を呼ぶより前には呼べない (まだウィンドウがないから)
あと、全然別の場所で呼んだ OpenGL の関数が、画面の描画時に影響を与えてしまうことはありうる
例えば、どこかで glColorMask を設定して元に戻すのを忘れてたら、glClear を呼んでも画面がクリアされない、とか
0518デフォルトの名無しさん
2009/09/24(木) 16:53:42glutInit() glutCreateWindow()あたりはそう気軽に呼ばないほうがいいかもね
openGLの関数ならmain()以外で何を呼ぼうがおおむね問題なし
(glBegin()だけを呼んでglEnd()を呼ばないのはダメとか例外はある)
0519デフォルトの名無しさん
2009/09/24(木) 19:02:44コールバック関数で指定する関数は静的じゃないとだめなようなのですが
クラスの非静的なメンバ関数を指定する手段なんてないですよね・・・?
0520デフォルトの名無しさん
2009/09/24(木) 19:04:040521デフォルトの名無しさん
2009/09/24(木) 20:13:51glutGetWindowData
というお約束
0522デフォルトの名無しさん
2009/09/24(木) 20:44:40大抵コールバック関数はユーザが任意でvoid*を渡せるだろ。
それにクラスのインスタンスのポインタを渡して使えばいい。
0523デフォルトの名無しさん
2009/09/26(土) 11:41:16Linuxでは何を使うのがメジャーなのか教えていただけませんか?
0524デフォルトの名無しさん
2009/09/26(土) 14:36:340525デフォルトの名無しさん
2009/09/26(土) 16:19:16バーテックスシェーダーを
#version 130
in vec3 position;
uniform mat4 projectionMatrix;
uniform mat4 modelviewMatrix;
out float y;
void main(void)
{
y = position.y;
gl_Position = projectionMatrix * modelviewMatrix * vec4(position, 1.0);
}
フラグメントシェーダーを
#version 130
out vec4 out_FragColor;
in float y;
const vec3 c1 = vec3(1.0, 1.0, 1.0);
const vec3 c2 = vec3(0.25, 0.25, 0.25);
void main(void)
{
float a = step(0.5, fract(y));
out_FragColor = vec4(mix(c2, c1, a), 1.0);
}
このように書いたところ、y = 1の面が正しく描画されず、FSで指定したc1とc2の色それぞれを含んだ砂嵐状態になってしまいます。他の5面は正しく描画されています。
http://kissho.xii.jp/1/src/1jyou92248.png
面の描画順を変えてみたりしてもy = 1の面が毎回おかしくなっています。GLSLはまだ扱い始めたばかりで、今回は自分だけでは間違いを発見することができませんでした。
何かおかしな点、助言などがありましたらよろしくお願いいたします。
0526デフォルトの名無しさん
2009/09/26(土) 17:00:39void main(void)
{
y = gl_Vertex.y;
gl_Position = ftransform();
}
varying float y;
const vec3 c1 = vec3(1.0, 1.0, 1.0);
const vec3 c2 = vec3(0.25, 0.25, 0.25);
void main(void)
{
float a = step(0.5, fract(y));
gl_FragColor = vec4(mix(c2, c1, a), 1.0);
}
で良いか?
0527デフォルトの名無しさん
2009/09/26(土) 17:08:27OpenGL3.0より前だとそういうことになりますね。
0528デフォルトの名無しさん
2009/09/26(土) 17:45:22解決策はよくわかんない。うまく丸めればいいんだろうけど、とりあえず
float a = step(0.5, fract(y-0.00001));
とか?
0529デフォルトの名無しさん
2009/09/26(土) 17:49:16おっしゃる通りvarying(in)の誤差だったようです。-0.00001のオフセットを加えたら直りました。
本当にありがとうございました。
0530デフォルトの名無しさん
2009/09/26(土) 19:07:02OpenTKですか、ググってみます
有り難うございます
0531デフォルトの名無しさん
2009/09/27(日) 05:38:16あとは丸め込みの規則がボードによってバラバラなんだよね。
偶数丸めや四捨五入で統一されているわけではない。
固定機能の色の計算では苦しませてもらいました。
0532デフォルトの名無しさん
2009/09/29(火) 15:21:07同じテクスチャ(模様入り)を違和感なく繋げてマッピングする方法ってあります?
色の違いで境界線が見えるようなことが無いようにしたいのですが。
0533デフォルトの名無しさん
2009/09/29(火) 19:46:080534デフォルトの名無しさん
2009/09/29(火) 22:26:41ttp://blogs.msdn.com/ito/archive/2008/03/21/photo-to-texture.aspx
0536デフォルトの名無しさん
2009/09/30(水) 17:45:23[左右上下反転][上下反転]
パターンがあるテクスチャなら
こうすれば目立たなくなるんじゃない?
レンダーステート少々いじるだけで出来そうだし
コストもゼロだ
0537デフォルトの名無しさん
2009/09/30(水) 18:31:52GL_MIRRORED_REPEAT を指定するというのはどうでしょうか.
幾何学的には必ずしも連続しませんけど,色はつながります.
ttp://www.opengl.org/sdk/docs/man/xhtml/glTexParameter.xml
0538デフォルトの名無しさん
2009/09/30(水) 19:47:45ttp://www.t-pot.com/program/120_Wang/index.html
これで繰り返し可能な大きなテクスチャを事前に作っておくという方法もあるかも
0539デフォルトの名無しさん
2009/09/30(水) 20:16:52ググってたらこんな方法を見つけたのですが
ttp://paulsolt.com/2009/07/openglglut-classes-oop-and-problems/
これよりスマートな方法はないんでしょうかね
0541デフォルトの名無しさん
2009/09/30(水) 21:00:11C++ デレゲート(もしくはデリゲート)でぐぐってみろ。お前さんの探してる答えが見つかる。
0542デフォルトの名無しさん
2009/10/02(金) 11:33:56GLSLを使用すれば、BlenderやLightWaveで作成した3Dモデルを
プログラム上で制御できるようになりますか?
0543デフォルトの名無しさん
2009/10/02(金) 11:44:31GLSLはモデルを制御しません
0544デフォルトの名無しさん
2009/10/02(金) 13:26:49ありがとうございます。
作った3DグラフィックをOpenGLのソースに落とせるソフト、
または、3Dソフトで作成したものをOpenGLのソースに落とす為に
橋渡しをするツール等あれば教えていただきたいです。
0545デフォルトの名無しさん
2009/10/02(金) 15:34:02データとプログラムを橋渡しをするのはプログラマーやシステムエンジニアの仕事です
お金を沢山用意してご相談ください
0546デフォルトの名無しさん
2009/10/02(金) 16:18:56自動で変換できるようなものは無いのですね。
ありがとうございました。
0547デフォルトの名無しさん
2009/10/02(金) 20:49:05複数のビューポートを設定した時にそれぞれの背景色を変えるにはどうすればいいですか?
0548デフォルトの名無しさん
2009/10/02(金) 21:35:29glScissor(x, y, w, h);
glEnable(GL_SCISSOR_TEST);
glClearColor(r, g, b, a);
glClear(GL_COLOR_BUFFER_BIT);
glDisable(GL_SCISSOR_TEST);
0549デフォルトの名無しさん
2009/10/02(金) 22:02:08ありがとうございます!
おかげさまで無事に解決できました。
Scissorってのを使えば良かったんですね。
0550デフォルトの名無しさん
2009/10/02(金) 22:49:36でもモデルビュアーでOpenGLコマンドでセーブできるオプションがあってもいいよね。
あってどーすんだという気もするが、多分存在しない。
0551デフォルトの名無しさん
2009/10/02(金) 22:56:540552デフォルトの名無しさん
2009/10/02(金) 23:03:54それは>>544がやりたいことと全然関係ない気がする
0553デフォルトの名無しさん
2009/10/02(金) 23:39:24Deep Exploration なら、各種3Dモデルフォーマットの他に
C言語ソースで保存することもできるよ。
表示するソースまで吐いてくれた気もするけど、ちょっと忘れた。
0554デフォルトの名無しさん
2009/10/02(金) 23:40:48書き忘れた。えっと確かOpenGLで表示してくれるソースだった気がする。
今度気が向いたら確認してみるー。
0555デフォルトの名無しさん
2009/10/05(月) 10:13:450556553
2009/10/06(火) 12:22:44確認しますた。DeepExplorationはOpenGLで表示する.cpp吐いてくれます。
というか、モデルを表示するDLを返してくれる関数を出力してくれます。
0557デフォルトの名無しさん
2009/10/06(火) 19:26:15オプションで、WinMainを含んだ完全なWindowsアプリケーションのソースも吐けるよ。
あえてGLUTは使っていないようで、ちょっと読みにくいソースだけど。
0558デフォルトの名無しさん
2009/10/06(火) 23:22:22世の中広いな
0559デフォルトの名無しさん
2009/10/06(火) 23:29:510560デフォルトの名無しさん
2009/10/06(火) 23:31:31頂点データじゃなくて、頂点を計算で求めてくれるなら面白いけど。
0561デフォルトの名無しさん
2009/10/09(金) 18:56:09GLUT_KEY_UPやGLUT_KEY_DOWNなどは
Apple Keyboardではどのキーが割り当てられているのでしょうか
0562デフォルトの名無しさん
2009/10/09(金) 19:34:510563デフォルトの名無しさん
2009/10/10(土) 09:55:53オブジェクトの回転についてお聞きしたいことがあります。
glRotateを使用してオブジェクトを回転させたいのですが、オブジェクトの
ローカル座標系を基準として回転させるには具体的に何をすれば良いのでし
ょうか?
凄く簡単な様ですが、妙に嵌っています。一本の棒をピッチ方向に45度回転
させた後に、その棒のローカル座標系を基準としてロール方向に45度回転さ
せるというものなのですが、グローバル(ワールド)座標系で回転している
様です。
参考となりますURLでも差し支え御座いませんので、どなたかお教えください。
0564デフォルトの名無しさん
2009/10/10(土) 10:28:44OpenGLにはワールド座標とローカル座標の区別はないけど、それはこの際ややこしくなるから置いておくとして。
多分今は回転を
glRotate(45, 1, 0, 0);//ピッチ
glRotate(45, 0, 0, 1);//ロール
DrawObject//オブジェクトの描画
ってやってるんだと思うけど、このピッチ回転ロール回転の順序を逆にしてみたらどう?
OpenGLは回転とか移動とかした際に、オブジェクトが持つ座標も一緒に変換を受けていると考えたらわかりやすいよ。
0565デフォルトの名無しさん
2009/10/10(土) 11:13:36早速の返答、有難う御座います。
多分、そのややこしくなる所が“肝”だと思っています。
アドバイス頂きましたピッチ回転とロール回転の順序を逆にしてしまい
ますと、向きが修正前と変わってしまい、都合が悪いです。
挙動を見ますと最後に記述したglRotateの成分方向のみについては、オ
ブジェクトの座標系通りに回転するのですが、その前に記述した別の成
分方向についてはオブジェクトの座標系通りには回転してくれません。
これから、glMultMatrixを使用してトライしてみます。
0566デフォルトの名無しさん
2009/10/10(土) 11:58:20出来れば目的の回転をかけた前後の、立体的形状がわかる三面図的なものがあれば、解決が早くなるかもしれない。
あとその回転かけてる部分のソースとかね。
0567デフォルトの名無しさん
2009/10/10(土) 11:59:07基本的には下のような流れだ。
glTlanslate(ホニャ〜// 移動が最初
glRotate(ホニャ〜 // 回転は描画前
// 以下描画
glBegin(ホニャ〜
glVertex(ホニャ〜
:
glEnd(ホニャ〜
実際の変換と記述が逆になるので、動きを追う時は描画部分→回転→移動 と下から上に考えた方が分り易い。(ここでの回転をワールド座標系位置での回転と考える)
0568デフォルトの名無しさん
2009/10/10(土) 12:48:460569デフォルトの名無しさん
2009/10/10(土) 13:19:55よく分からないがローカル座標系で回転するクォータニオンを合成する
とかかな?それをglRotateに与えてやればいい気がする
0570デフォルトの名無しさん
2009/10/10(土) 20:41:38仮にカメラの位置をE、物体の見る位置をV、カメラの上方向ベクトルをUとすると
VEで出来るベクトルとUの外積で回転軸が求まり
(0,0,1)とVEで出来るベクトルの内積から回転角度が求まると思ったのですが
計算がどうも合いません
質問する板が違いましたら誘導をお願い致します。
0571デフォルトの名無しさん
2009/10/10(土) 20:47:310572デフォルトの名無しさん
2009/10/10(土) 21:05:08OpenGLを使ったデータビューワーを作っているのですが、
同時にOpenGLを使わない時の表示も行ってます。
その時にクォータニオンが必要でクォータニオンからgluLookAtは
出来るのですが、gluLookAtの引数が分かっている時のクォータニオンも
必要なのです。(出来ると思うのですがどうも上手く行きません)
0573デフォルトの名無しさん
2009/10/10(土) 21:21:32それようのライブラリがどっかに転がってるから、素直にそれ使っときなさい。
0574デフォルトの名無しさん
2009/10/10(土) 21:45:10そっちで計算した行列をglLoadMatrixで設定すれば済む話なんじゃない?
gluLookAt使わずに
0575デフォルトの名無しさん
2009/10/11(日) 16:52:41回転に関しますアドバイス、有難う御座います。
未だに回転で嵌っております。「ややこしくなる所」が肝じゃないとの回答
も頂きましたが、ローカル座標系とグローバル座標系をきちんと意識してい
ないと駄目なようです。
傾いた直交座標系を基準にオブジェクトを回すだけなのですが、簡単では無
い様です。glMultMatrix()の適用についても触れられておりました。
日本語訳(機械翻訳)
http://opengl.jp/oglfaq/transformations.htm
9.162 オブジェクトを揺らしたり、ピッチ&ロール変換するには?
原文
http://www.opengl.org/resources/faq/technical/transformations.htm#tran0162
9.162 How can I transform an object with a given yaw, pitch, and roll?
0576デフォルトの名無しさん
2009/10/11(日) 17:50:33テクスチャマッピングのときにjpg画像ってあまり使われないのですか?
違う形式に変換してる例ばかりなのですが、jpgでやりたい場合はどうすれば良いのでしょうか
0577デフォルトの名無しさん
2009/10/11(日) 17:57:47メモリに読み込む方法は、jpgのフォーマットに合わせて手作りするか、
どっかに転がってるライブラリでも使っときなさい。
0578デフォルトの名無しさん
2009/10/11(日) 19:04:180579デフォルトの名無しさん
2009/10/11(日) 20:02:16やっぱりどのような回転を行いたいのかを図示なりしてくれないとアドバイスもしにくいよ。
それよりもクォータニオン使えば、思い通りの回転を加えられると思うんだけどなぁ。
>>576
OpenGLではjpgだろうが、pngだろうがプログラムで読みこんで配列に格納したあとに転送するからOpenGLで直接圧縮ファイルを扱うことはできないよ。
0580デフォルトの名無しさん
2009/10/11(日) 20:14:430581デフォルトの名無しさん
2009/10/11(日) 22:14:40ビットマップでいいんだが自作するしかないか・・・
0582デフォルトの名無しさん
2009/10/11(日) 22:19:200583デフォルトの名無しさん
2009/10/11(日) 23:38:17申し訳御座いませんでした。
イメージを図示しました。
http://imepita.jp/20091011/843830
3本の矢印からなるオブジェクトがあるとしまして、直前の姿勢の1つの軸を
基準に回転させ、回転終了後に再度別の軸を基準に回転させていくというも
のです。
なお、回転軸の選択と回転角度は別途GUIより与える形です。
アドバイスをお願いいたします。
0584デフォルトの名無しさん
2009/10/12(月) 00:06:29RGBの順番にXYZと解釈させてもらうと、少なくともその図の回転だけなら、
Glu.LookAt(1, 2, 3, 0, 0, 0, 0, 0, 1);
GL.Rotate(-45, 0, 1, 0);
GL.Rotate(-45, 1, 0, 0);
GL.Begin(BeginMode.Lines);//正六角形描画。
{
GL.Color3(1.0f, 0.0f, 0.0f);
GL.Vertex3(0.0, 0.0, 0.0);
GL.Vertex3(1.0, 0.0, 0.0);
GL.Color3(0.0f, 1.0f, 0.0f);
GL.Vertex3(0.0, 0.0, 0.0);
GL.Vertex3(0.0, 1.0, 0.0);
GL.Color3(0.0f, 0.0f, 1.0f);
GL.Vertex3(0.0, 0.0, 0.0);
GL.Vertex3(0.0, 0.0, 1.0);
}
GL.End();
これでいけたけど。
0585デフォルトの名無しさん
2009/10/12(月) 00:07:080586デフォルトの名無しさん
2009/10/12(月) 00:30:45早速の御返答、有難う御座います。
提示頂きましたコードをC++用に直しまして確認しましたところ、確かに
希望します挙動になっております。
明日、現状のプログラムに直接glRotateを組み込んで再確認してみます。
夜遅くに対応して頂き、誠に有難う御座いました。
0587sage
2009/10/12(月) 09:20:23ttp://i-saint.skr.jp/pg/#gl_kanji
(要SDL。ソース公開)
ttp://zzt-kuruma.hp.infoseek.co.jp/opengl/main.htm
(glm32.lzhってやつでフォントが使える)
0588デフォルトの名無しさん
2009/10/12(月) 10:49:33ありがとう
ちょうどSDL使ってるしgl_kanjiみてみようかな
0589デフォルトの名無しさん
2009/10/12(月) 10:51:060590デフォルトの名無しさん
2009/10/12(月) 14:15:21情報ありがとうございます。
0591デフォルトの名無しさん
2009/10/13(火) 19:34:10マウスを右クリックしたまま左右に動かすことで
視点のズームインとズームアウトさせたいのだが
移動量をどう与えると良いのだろうか
0592デフォルトの名無しさん
2009/10/13(火) 22:56:150593デフォルトの名無しさん
2009/10/14(水) 04:13:280594デフォルトの名無しさん
2009/10/14(水) 07:45:00右ドラッグは回転、左右ドラッグでズームインアウトするようにしてくれ
0595デフォルトの名無しさん
2009/10/15(木) 10:48:35>>594
何か根拠でも?
それと、左ドラッグでは何を想定している?
0596デフォルトの名無しさん
2009/10/15(木) 11:18:31左右ドラッグでドラッグ開始点基準でズームインアウト
微妙なコントロールで使いたい回転が左ドラッグなので使いやすいよ
0597デフォルトの名無しさん
2009/10/20(火) 22:15:57GLSLおもすれー
0598デフォルトの名無しさん
2009/10/21(水) 01:37:42下記のような頂点バッファAとBがあるとします。
A: a1, a2, a3, ..., a10000
B: b1, b2, b3, ..., ..., b20000
この状態からデータのコピーなしで、
A: a1, a1, a2, a2, a3, a3, ..., a10000, a10000
B: b1, b2, b3, b4, b5, b6, ..., b19999, b20000
という具合にattributeを生成したいのですが、
どのようにすればよいのでしょうか?
0599デフォルトの名無しさん
2009/10/21(水) 01:45:280600デフォルトの名無しさん
2009/10/21(水) 02:10:09まさにそれです!
ARBなのが残念です・・・。
別の方法を検討してみます。
ありがとうございました!
0601デフォルトの名無しさん
2009/10/21(水) 20:24:12glGenTextures(1, &m_texture );
glBindTexture(GL_TEXTURE_2D, m_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width , height , 0, GL_RGBA, GL_UNSIGNED_BYTE, data );
で作成しているのですが
m_textureの戻り値が常に0になり、
複数のテクスチャを読み込んでも、最後に読み込んだデータしか適応されなくなるのです。
いちおう、データが読み込まれて画像表示もできてるので
生成エラーではないようなのですが
0602デフォルトの名無しさん
2009/10/21(水) 20:27:25って何?意味がわからん。
0603わかんないんです(><) ◆WAkan9Ey1g
2009/10/21(水) 22:28:340604601
2009/10/21(水) 22:38:04glGenTextures(1, &m_texture );
実行後の &m_texture が常に0なんです。
テクスチャ削除とかしていません。
普通、1,2,3 と利用されてない数値採番するはずと思うのですが
0605デフォルトの名無しさん
2009/10/21(水) 22:43:440606デフォルトの名無しさん
2009/10/21(水) 22:47:43なんやかんや初期化した後の
glutMainLoopの直前でコールしてるつもりです。
0607デフォルトの名無しさん
2009/10/21(水) 23:29:020608デフォルトの名無しさん
2009/10/22(木) 00:14:49GenTexture実行後の「m_texture」が0なんだよね?それとも「&m_texture」が0?
0609デフォルトの名無しさん
2009/10/22(木) 00:34:560610601
2009/10/22(木) 12:32:56デバッグ時のブレーク部分がずれてたので
いろいろ試してテキストのコード形式をshift_jisに変更した所
行けるようになりました。
ソースをmacのxcodeで生成したのが悪かったんでしょうかね
訳わからん
ありがとうございました
0611デフォルトの名無しさん
2009/10/22(木) 12:34:09m_textureが0です
>>609
XP+VC2003
glGetErrorは、0を返してました。
0612デフォルトの名無しさん
2009/10/23(金) 14:19:210613デフォルトの名無しさん
2009/10/24(土) 03:54:49GTK+等を使わず、なるだけlow levelで実装したいのですが、可能でしょうか?
0614わかんないんです(><) ◆WAkan9Ey1g
2009/10/24(土) 10:31:400615デフォルトの名無しさん
2009/10/24(土) 10:47:12それか、Macだったら素直にCocoaでOpenGL.Framework使えば?
0616613
2009/10/24(土) 11:20:1410.6.1ですがヘッダやフレームワークではGLXが見つからないです…
どこか別のパッケージに入ってるんでしょうか…
あとOpenGLでウィンドウ描写する処理をフレームワーク化したいんですが、
何かCocoa+OpenGL.framworkでxib, plist等をリソースに追加してパッケージ化しても利用できないようで…
0617デフォルトの名無しさん
2009/10/24(土) 12:28:10/Developer/SDKs/MacOSX10.6.sdk/usr/X11/include/GL/glx.h
とか
/usr/X11/include/GL/glx.h
とか
そもそもX自体がインストールされてないとか? でも最初から入ってるはずだしなぁ
0618デフォルトの名無しさん
2009/10/24(土) 13:33:470619デフォルトの名無しさん
2009/10/25(日) 00:10:460620デフォルトの名無しさん
2009/11/01(日) 12:46:36現状OpenGLは3.2でDirectX10.0に追いついて、コンピューティングに関してはOpenCLがあるからDirectX10.5くらいな感じだな。
今年はなかなか勢いがあったからそのまま維持してもらいたいものだが。
0621デフォルトの名無しさん
2009/11/04(水) 19:23:443次元空間上に平面(凹凸もないただの平面)を描画したいのですが
どのようにコーディングすればよいのでしょうか?
0622デフォルトの名無しさん
2009/11/04(水) 19:32:12平面の式 ax+by+cz+d=0 の a, b, c までしか埋まらない
0623デフォルトの名無しさん
2009/11/04(水) 21:21:090624デフォルトの名無しさん
2009/11/04(水) 22:03:580625デフォルトの名無しさん
2009/11/04(水) 23:55:444つめのパラメータ(原点からの距離?)が必要なわけなのでしょうか?
だとすればどうコーディングすればよいのでしょうか
どこかに参考になるコードが載っていればと思って探してはいるのですが
0626デフォルトの名無しさん
2009/11/05(木) 00:02:32何がしたいかによる。
4つめのパラメータが無ければ、平面の向きしか定まらない。例えば何らかのモデルの任意の点に対して接している平面とかを描きたいのなら、そのときはモデルの頂点から4つめのパラメータは求めることが出来る。
どういう風にコーディングすればいいとかは自分で考えるべきだろう。わからないことがあって、どうしても聞かなければならないというのならせめてもっと何をどのようにしたいか等を具体的に言おう。
0627デフォルトの名無しさん
2009/11/05(木) 01:52:01いったい具体的に何がやりたいのかさっぱりわからないね。
0628デフォルトの名無しさん
2009/11/05(木) 02:46:24交差したら交点を求めて、その交点を元にポリゴンをレンダリング。
というのが一番まじめな無限平面を描く方法だろうか。
場合によっては十分大きな一枚ポリゴンを適当に向きが合うように行列掛けてレンダリングするとかでいいんじゃないだろうか。
他にはフラグメントシェーダでレイトレして平面をレンダリングするとか。
0629デフォルトの名無しさん
2009/11/05(木) 05:46:08原点から距離cのところに法線(1,0,0)の適当な平面を描いて
それを法線Nの座標系に変換するのが簡単じゃね
適当なベクトルとNの外積で変換行列は簡単に作れるし
0630デフォルトの名無しさん
2009/11/05(木) 14:21:510631デフォルトの名無しさん
2009/11/05(木) 19:31:47どうすればよいのでしょうか?
0632621
2009/11/05(木) 20:00:46法線ベクトルを正規化しているときには
原点から平面に下ろした垂線の長さになりますよね
A,B,Cで向きだけ決めて原点と平面上のどっかの点を使って
垂線と平面の交点を求められないかなあと考えたのですが
なんだかこんな話していたら数学の話になってしまいますよね
0633デフォルトの名無しさん
2009/11/05(木) 21:00:120634デフォルトの名無しさん
2009/11/05(木) 21:44:310635デフォルトの名無しさん
2009/11/05(木) 21:56:43頭よいでちゅねとでも言ってほしいのか?
0636デフォルトの名無しさん
2009/11/05(木) 21:58:570637デフォルトの名無しさん
2009/11/05(木) 22:25:240638デフォルトの名無しさん
2009/11/06(金) 19:44:56元のデプスバッファに戻して上記ステンシルマスクを使用し描画。」
この処理を何度も繰り返す必要があり、
デプスバッファの切り替えとして、
glReadPixels(),glDrawPixels()、GL_DEPTH_COMPONENT
を読み書きしているのですが、
glDrawPixels()がとにかく遅いです。
一時的にデプスバッファの参照先を切り替えるなど、
何か良い方法はないでしょうか?
0639デフォルトの名無しさん
2009/11/06(金) 19:50:22ステンシルマスクを作るのにデプスバッファが不要なら、その間、単に無効にするとか
glDisable(GL_DEPTH_TEST);
glDepthMask(GL_FALSE);
0640638
2009/11/06(金) 20:11:08ステンシルマスクを作る為に一時的に特定のデプスバッファが必要になります。
その後、元のデプスバッファが必要なんです。
0641デフォルトの名無しさん
2009/11/06(金) 20:54:24レンダリング先がFBOなら、必要に応じてデプスバッファのレンダーバッファを切り替えたりできたりして
そうじゃなければその一時的に使用するデプスバッファをテクスチャにしてピクセルシェーダーで距離比較しながらステンシルを生成とか
とりあえずリアルタイム処理中にglXXXPixelsの類は使用禁止でしょう
0642638
2009/11/09(月) 23:03:26床井先生の「Depth Peeling」とやりたいことが似ていたので、
参考にしてデプステクスチャとデプス値を比較させるとうまくいきました。
レスポンスも悪くなさそうです。
ありがとうございます、助かりました。
0643デフォルトの名無しさん
2009/11/10(火) 20:58:23OpenGLが扱えればこれらのグラフィックス部分が開発できる!!!
まんまOpenGLなのはPSP/PS3だけなのだが。
0644デフォルトの名無しさん
2009/11/10(火) 21:14:140645デフォルトの名無しさん
2009/11/10(火) 21:15:270646デフォルトの名無しさん
2009/11/10(火) 21:24:15ただでさえ赤面しそうな響きなのに
GLSLを「ぐるえすえる」とか言われたときは脳髄に電気が通った。
0647デフォルトの名無しさん
2009/11/10(火) 21:47:340648デフォルトの名無しさん
2009/11/11(水) 10:55:300649デフォルトの名無しさん
2009/11/11(水) 14:41:000650デフォルトの名無しさん
2009/11/11(水) 15:06:18ごりさる
0651デフォルトの名無しさん
2009/11/11(水) 19:19:060652デフォルトの名無しさん
2009/11/11(水) 21:04:580653デフォルトの名無しさん
2009/11/11(水) 21:20:38なんかオプーナみたいだな
0654デフォルトの名無しさん
2009/11/11(水) 22:26:07OpenGL = オープン汁
0655デフォルトの名無しさん
2009/11/11(水) 22:37:550656デフォルトの名無しさん
2009/11/12(木) 10:12:37|┃ | |
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \
|┃ | (__人__) |
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
0657デフォルトの名無しさん
2009/11/13(金) 17:56:28これって、GL VIWER の誤作動でしょうか?それとも、プログラム側から、現在のバージョンより上の機能を使うことができるのでしょうか?
0658デフォルトの名無しさん
2009/11/13(金) 18:13:030659デフォルトの名無しさん
2009/11/15(日) 23:34:59何処からDLすれば良いのか判りません。
是非、教えてください
http://www.opengl.org/registry/
0660デフォルトの名無しさん
2009/11/15(日) 23:36:200662デフォルトの名無しさん
2009/11/16(月) 17:03:250663デフォルトの名無しさん
2009/11/16(月) 22:02:35GREWでググる必要もあるかもね。
0664デフォルトの名無しさん
2009/11/16(月) 22:06:43あっちのが安定感はあるけど
0665デフォルトの名無しさん
2009/11/16(月) 22:28:35なんだGREWって?w
0666デフォルトの名無しさん
2009/11/16(月) 22:34:020667デフォルトの名無しさん
2009/11/16(月) 22:38:000668デフォルトの名無しさん
2009/11/16(月) 22:54:090669デフォルトの名無しさん
2009/11/18(水) 21:19:17glGenBuffers(1, &vtxID); //glGenBuffers は glew.h で定義されている関数
このような箇所で、アクセス違反を起こしてしまい先に進めません。
glutInit(&argc, argv) も glewInit() もエラーになっていません。
他にもシェーダ関係 glCreateShader も駄目です。
環境は、OS:WindowsXP, Video:Radeon IGP 340M(Omega 3.8.442), OpenGL1.1
古いハードですが、新機能分も glew(1.5.1) でどうにかしてくれないのでしょうか?
そもそも別の原因なのでしょうか?
0670デフォルトの名無しさん
2009/11/18(水) 21:52:34openGLのどのバージョンが使えるかはハードとドライバーの問題
glewはドライバで拡張された機能へのアクセスをサポートする便利ライブラリにすぎない
openGL1.5が使いたければ if (GLEW_VERSION_1_5)が通るハードとドライバが必要
使い方
ttp://glew.sourceforge.net/basic.html
# glGenBuffersARBだと使えるとかは?
# GLEW_ARB_vertex_buffer_objectをサポートしてれば...1.1じゃ無理か
0671デフォルトの名無しさん
2009/11/18(水) 23:13:32ありがとうございます。
GLEW のbin に入っていた glewinfo.exe で使える/使えない関数リストが得られました。
GL_VERSION_1_1: OK
---------------
GL_VERSION_1_2: MISSING
---------------
glCopyTexSubImage3D: MISSING
glDrawRangeElements: MISSING
glTexImage3D: MISSING
glTexSubImage3D: MISSING
後は、ひたすら、MISSING ...
glGenBuffers, glCreateShader, ... glGenBuffersARB みんな駄目でした。
大げさな3Dのゲームとかじゃなくてちょっと試してみたかっただけなんですが、
私の環境ではどうも無理みたいです。。。
Omega Driver なら、glew なら、と思っていたんですが。
0672デフォルトの名無しさん
2009/11/22(日) 23:08:380673デフォルトの名無しさん
2009/11/23(月) 00:55:23もし、普及率が低いならフラグメントシェーダーで実装することも考えているのですが、実装方法がいいのが思いつかんのです・・・
メモリや処理負荷は抑えたいのです。
0674デフォルトの名無しさん
2009/11/23(月) 12:45:590675デフォルトの名無しさん
2009/11/23(月) 14:28:04ありがとうございます。
あと、OpenGLの描画先をウィンドウではなくてテクスチャなどにしたいんですが、どうすればいいでしょうか?
0676デフォルトの名無しさん
2009/11/23(月) 15:04:450677デフォルトの名無しさん
2009/11/23(月) 15:25:360678デフォルトの名無しさん
2009/11/23(月) 15:29:020679デフォルトの名無しさん
2009/11/23(月) 15:31:32まずは固定パイプラインにおける基礎から学ぶのがいい。
0680デフォルトの名無しさん
2009/11/23(月) 15:31:36とか
OpenGL draw to texture
とか
いくらでも思いつくだろ?
0681デフォルトの名無しさん
2009/11/23(月) 15:44:15じゃんじゃんジオメトればいい
0682デフォルトの名無しさん
2009/11/23(月) 15:50:20まずはシェーダは置いといてOpenGLの一通りの機能試したほうが、頭の中の整理が出来ていい気がする。あくまで個人的な意見だけど。
0683デフォルトの名無しさん
2009/11/23(月) 16:06:050684デフォルトの名無しさん
2009/11/23(月) 16:17:34glCopyTexSubImage2D関数を使ってテクスチャにコピーというものでした。
一応はなんとかなりそうです。
にしてもやってることは同じなのにDirectXとは見た目が大分違いますね。戸惑います・・・。
ありがとうございました。
0685デフォルトの名無しさん
2009/11/23(月) 16:19:18対応してるOpenGLのバージョンは?
0686デフォルトの名無しさん
2009/11/23(月) 17:31:210687デフォルトの名無しさん
2009/11/23(月) 18:05:57君が使ってるOpenGLのバージョン。
0688デフォルトの名無しさん
2009/11/23(月) 19:39:55参考になるようなサイト等はありますか?
0689デフォルトの名無しさん
2009/11/23(月) 20:39:220690デフォルトの名無しさん
2009/11/23(月) 22:59:35すいません。ググっても出てこないもので…
0691デフォルトの名無しさん
2009/11/23(月) 23:14:200692デフォルトの名無しさん
2009/11/23(月) 23:14:50URL晒せ
0693デフォルトの名無しさん
2009/11/23(月) 23:57:08私のとこは2.1.2でした。できるだけ多くの環境を考えたいので、拡張はできれば避けたいんですよね・・・
0694デフォルトの名無しさん
2009/11/24(火) 00:09:50今時一切の拡張を使わないってのは現実的じゃないし
アプリケーションの種類にもよるんだろうけど、FBOとかシェーダーとかそろそろ気軽に使っていいと思うんだけどな
0695デフォルトの名無しさん
2009/11/24(火) 00:16:500696デフォルトの名無しさん
2009/11/24(火) 00:26:57時間が無いのに、なんでこんなに調べづらいんでしょう・・・ハァ
0697デフォルトの名無しさん
2009/11/24(火) 00:47:50そこで、はじめのイメージでは何にでも投影できるとおもっていたのですが、例えばティーポットにはムリですよね?
投影マッピングは射影テクスチャリングなどともよばれて、下のHPに載ってます
http://asura.iaigiri.com/OpenGL/gl45.html
0698デフォルトの名無しさん
2009/11/24(火) 01:34:55glutSolidTeapotはUV自動生成だから
0699デフォルトの名無しさん
2009/11/24(火) 01:57:28ムリ?
0700デフォルトの名無しさん
2009/11/24(火) 02:01:58逆にティーポットには無理と考えた理由がわからないんだが
0701デフォルトの名無しさん
2009/11/24(火) 02:14:37頂点の座標とテクスチャの座標を一致させるところで
サンプルでは立方体を表示させてたから、その立方体がテクスチャ座標で、頂点の座標と対応させるとおもってた
→ティーポットは対応させる点がないからムリ
0702デフォルトの名無しさん
2009/11/24(火) 02:33:58頂点シェーダを見る限り、テクスチャ座標は頂点座標から自動計算しているようだが。
0703デフォルトの名無しさん
2009/11/24(火) 02:35:130704デフォルトの名無しさん
2009/11/24(火) 02:41:54普通にティーポットをウインドウに表示させるとする。
ティーポットは3Dで表示されている。
ところで、ウインドウはx軸とy軸を持つ2Dのビットマップだが、
u軸とv軸を持つ2Dのテクスチャと見ることも出来る。
そのとき、ティーポットの頂点のビットマップにおける座標xyを、
テクスチャのuvとみれば、投影マッピング用のテクスチャ座標となる。
0705デフォルトの名無しさん
2009/11/24(火) 02:54:42取得できるの?
>>702
リンク先のプログラムはエラーメッセージがでて終了してしまう
0706デフォルトの名無しさん
2009/11/24(火) 03:14:070707デフォルトの名無しさん
2009/11/24(火) 03:17:19それは自分で計算する。
リンク先のVertexProgram::49がそう。
アンタがいまいちぴんときてないのは、
通常のレンダリングパイプラインの仕組みの
理解が足りないからか。
0708デフォルトの名無しさん
2009/11/24(火) 03:50:11今はリンク先のプログラムを動かそうとしています
床井先生のプログラムで、立方体をティーポットにしたら、テクスチャがグチャグチャに表示されました
きれいに投影できるか考えてみたいとおもいます
0709デフォルトの名無しさん
2009/11/24(火) 04:01:49Error : No valid techniquesとかでる
Cg Toolkitのインストールは同ページを参考にしてる
VC++ 2008だからとおもったけど706さんは動いたっていう…
0710デフォルトの名無しさん
2009/11/24(火) 05:12:34TexProj.cgfxファイルの vp40 fp40をvp20 fp 20に変えたら動くかもよ
なんのボード使ってるかしらんからわかんないけど
0711デフォルトの名無しさん
2009/11/24(火) 16:31:43>>694が言っているようにそろそろ抵抗無くFBOあたりは使ってもいい気がする。とりあえずFBOを拡張で呼んでおけばOpenGL1.5より先のハードで動くわけだし。
あんまり対応ハードのこと考えてるとOpenGLに限らずDirectXでもいい機能が使えなくなるよ。
NV拡張とかATI拡張とか使う気が引けるのはわかるけど。
0712デフォルトの名無しさん
2009/11/24(火) 16:38:200713デフォルトの名無しさん
2009/11/24(火) 17:18:000714デフォルトの名無しさん
2009/11/24(火) 18:30:56同じ結果になるためには
3次元座標の各値をどのように変換すればよいのでしょうか?
何も特別に設定しない限りは前者がデフォルトだったと思うのですが
後者のように設定したもので
0715デフォルトの名無しさん
2009/11/24(火) 23:33:29別に変換はいらないと思うよ。頂点情報とかをZ軸を上として対応させるといい。
0716デフォルトの名無しさん
2009/11/25(水) 18:11:28OpenGL Volumizer のマニュアルとか、品質上げるなら Pre-Integrated Volume Rendering とか。
Pre-Integrated... では register combiner なんか使ってたりするけど、
最近は安いカードでも 3D Texture も使えるしフィルレートも上がったしフラグメントシェーダも使えるしで、
普通に 256^3 を全画面表示でクルクルとかできる。値変換したり色付けたりも GLSL で簡単に。
0717デフォルトの名無しさん
2009/11/28(土) 17:48:310718デフォルトの名無しさん
2009/11/28(土) 18:19:01, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , -─ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| > ---- r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ gugurecus ]
0719デフォルトの名無しさん
2009/11/28(土) 19:44:53スレ読め。
0720デフォルトの名無しさん
2009/11/30(月) 13:36:02で点を描画したいんだけど
結果を見たら点列が表示されません
glPointSize();で点のサイズを10にしたり極端に大きくしたりしたんですが
それでも点列が表示されないのですが何が原因なんでしょうか?
環境はMac OS X 10.6です
0721デフォルトの名無しさん
2009/11/30(月) 15:07:020722デフォルトの名無しさん
2009/12/01(火) 06:27:420723デフォルトの名無しさん
2009/12/03(木) 15:43:130724デフォルトの名無しさん
2009/12/03(木) 16:00:090725デフォルトの名無しさん
2009/12/03(木) 16:18:20例えばIE限定でもいいので今動くものはないのでしょうか
0726デフォルトの名無しさん
2009/12/03(木) 16:22:210727デフォルトの名無しさん
2009/12/08(火) 13:35:56xpsp3上でC#、opentkなるラッパーを使ってopenglを勉強中なんですが、
文字を描画するのにDllImport属性をつけてwglのUseFontBitmaps関数を使用しています。
で、適宜ReleaseDCやopentkでのGL.DeleteLists関数を使ってリソースを解放している
つもりなんですが、どうしても最後はメモリ不足だってしかられてフリーズします。
何かいい解決策ないでしょうか?
0728デフォルトの名無しさん
2009/12/08(火) 15:09:070729デフォルトの名無しさん
2009/12/08(火) 15:12:54・がんばってデバッグする
・これが動かないのはどう考えてもおかしいというくらい小さいプログラムを作ってソースをupする
0730727
2009/12/08(火) 17:25:04質問しっぱなしもあれなんで、一応結果を書いておきます。
念のためglDeleteListsの前後でglIsListで確認したけど、キチンと消してる。
じゃあってんでディスプレイリストを実行した後、全部消去して
必ず指標の開始を1にしてもだめ。orz
728さんのいうように全然違うやり方でしないとだめそう。
ソースupは一部、ぐぐった結果をコピペして使っているので、
勝手にupするのもあれだし、こんな事で許可を求めに
数人の方に連絡するのもあれなんで、とりあえず、止めときます。
0731デフォルトの名無しさん
2009/12/08(火) 21:57:09個人により程度差はあるだろうが、一般的には、そんなことでいちいち連絡してくるなってところだろう
0732デフォルトの名無しさん
2009/12/10(木) 22:09:36何が起きているか良く分からないので変数の値をトレースしたいのですが。
デバッグもどうやればいいのか分かりません。
0733デフォルトの名無しさん
2009/12/10(木) 22:12:08ウィンドウには出ないが、コンソールを見ればいい
0734732
2009/12/10(木) 22:13:40わかりません(´・ω・`)
0735734=733
2009/12/10(木) 22:15:220736デフォルトの名無しさん
2009/12/10(木) 22:54:43普通には出来ない。
コンパイル時にわかるエラーとかはOpenGLのGetShaderInfoLogでわかるけど。
0737デフォルトの名無しさん
2009/12/11(金) 08:55:06テクスチャに文字を描画する関数を作ればいいな
0738デフォルトの名無しさん
2009/12/11(金) 16:52:20苦労するよな。デバッグ。
おれは、テクスチャにちまちま出力してるよ。
0739デフォルトの名無しさん
2009/12/11(金) 19:53:58>>737
残念。シェーダーは頂点毎、画素毎に動くから基本的に1ピクセルずつしか処理されない。
だから一回の処理の中で文字を書くというのも不可能だよ。
0740デフォルトの名無しさん
2009/12/11(金) 23:50:08glTranslateやglRotate使ってるけど、大量に描画すると遅い気がする。
0741デフォルトの名無しさん
2009/12/12(土) 00:04:28変換操作はTranslateとかでいいと思うけど、画像のテクスチャはひとつにまとめてテクスチャ座標で切り出したりしたほうが速いかも。
あと、テクスチャフィルタリングを可能であればニアレストネイバーにするとか。
プリミティブのタイプでも差が出るとも聞くからトライアングル系にするとか。
0742デフォルトの名無しさん
2009/12/12(土) 05:31:544年ぶりのリリースかぁ
0743デフォルトの名無しさん
2009/12/12(土) 17:04:45フラグメントシェーダでのデバッグなら、知りたい変数の値をだいたい0〜1の範囲になるように
スケーリングしたりして色として出力して画面の色を見てどんな値になっているか確かめる方法を俺はよく使ってる。
またはNaNだったり0だったら赤色出力するという方法もある。
Cg言語だとnVidiaのサイトにshader debuggerというソフトがあるけど
GLSLにそういうデバッガがあるかどうかは知らん
0744732
2009/12/12(土) 22:50:51みなさん、ありがとうございます!
>>739
ES 2.0対応を考えていたのですが、開発はなるべく互換性を保ちつつ
GL3.2でやっておき、後でES2.0用に直すようにすれば TransformFeedback も
使えそうですね。ありがとうございます。
>>738 >>743
お二人は同じやり方をしているのでしょうね。
テクスチャの色として出力する方法、試してみようと思います。
ありがとうございます。
0745デフォルトの名無しさん
2009/12/13(日) 18:57:43なぜか前面と後面しか正常に表示されない。。。
しかも右面は欠けちゃってるし。。。
もうダメポ
0746デフォルトの名無しさん
2009/12/13(日) 19:32:38と言いたいところですが、
そんな状態ではあなた自身が辛いだけでしょう。
仕事や共同作業でしたら他人も迷惑します。
そのまま諦めて下さい。
0747デフォルトの名無しさん
2009/12/13(日) 19:43:07フラグメントシェーダで、UV値をそのまま色にして出力するんだ。
ちゃんとUVが張ってあれば綺麗なグラデーションがでるし、
UVがおかしければ一色になってたり一つの方向のみグラデーションしてたりする。
0748デフォルトの名無しさん
2009/12/13(日) 20:55:550749デフォルトの名無しさん
2009/12/13(日) 23:09:260750デフォルトの名無しさん
2009/12/13(日) 23:30:210751デフォルトの名無しさん
2009/12/14(月) 02:49:080752デフォルトの名無しさん
2009/12/14(月) 21:15:480753デフォルトの名無しさん
2009/12/14(月) 22:10:030754デフォルトの名無しさん
2009/12/14(月) 22:26:480755デフォルトの名無しさん
2009/12/14(月) 22:40:22大量のポリゴンをテクスチャから参照した位置に移動させてるんですが、描画したいのは一部だけなので
0756デフォルトの名無しさん
2009/12/14(月) 23:56:11ジオメトリシェーダーならポリゴン描画キャンセルできるが。
0757デフォルトの名無しさん
2009/12/15(火) 00:57:33考えても見なかった。ちょっとオーバーな気もしますが、最後の高速化案として調べて見ます。
0758デフォルトの名無しさん
2009/12/15(火) 06:33:370759デフォルトの名無しさん
2009/12/17(木) 05:54:13glTexcoordに渡す s, t, r, q の値そのものを勘違いしてないかい?
glVertexと同じ空間イメージで渡してないかい?
ただテクスチャ貼るだけなら s, t だけで良くて、各面に対し
左上( 0, 1)、右上( 1, 1)
左下( 0, 0)、右下( 1, 0)
見たいな指定してるぅ?
0760デフォルトの名無しさん
2009/12/20(日) 01:52:36ありがとう
0761デフォルトの名無しさん
2009/12/21(月) 02:36:05http://itpro.nikkeibp.co.jp/article/COLUMN/20060710/242865/?ST=develop
を参考にしているんですが、情報が古過ぎて合っているのかどうか判りません。
OSはWindows Vistaで
CPUはIntel Core2 Duo T6400という64ビットです。
この場合、http://download.java.net/media/jogl/jsr-231-2.x-webstart/
のjogl-natives-windows-i586.jarをインストールすればいいんですか?
もう二週間くらい悩んでいます。どうかお願いします。
0762761
2009/12/21(月) 03:10:56他のファイルも
copied 'jogl.jar' to
C:\Program Files (x86)\Java\jdk1.6.0_17\jre\lib\ext
copied 'jogl.dll' to
C:\Program Files (x86)\Java\jdk1.6.0_17\jre\bin
copied 'jogl_cg.dll' to
C:\Program Files (x86)\Java\jdk1.6.0_17\jre\bin
copied 'jogl_awt.dll' to
C:\Program Files (x86)\Java\jdk1.6.0_17\jre\bin
Installation Complete.
In order to uninstall JOGL, please execute the following script:
E:\Program Files\JOGL_JSR231_win32\uninstall_jre.bat
…としてデモを以下のように実行しましたが
E:\Program Files>java -cp jogl-demos.jar demos.gears.Gears
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/opengl/aw
t/GLCanvas
Caused by: java.lang.ClassNotFoundException: javax.media.opengl.awt.GLCanvas
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
Could not find the main class: demos.gears.Gears. Program will exit.
…という結果です。
0763デフォルトの名無しさん
2009/12/21(月) 10:22:25"C:\Program Files (x86)\Java\jdk1.6.0_17\jre\bin\java" -cp jogl-demos.jar demos.gears.Gears
を試してみて
0764761
2009/12/21(月) 14:21:02ありがとうございます。
E:\Program Files>"C:\Program Files (x86)\Java\jdk1.6.0_17\jre\bin\java" -cp jogl-demos.jar demos.gears.Gears
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/opengl/awt/GLCanvas
Caused by: java.lang.ClassNotFoundException: javax.media.opengl.awt.GLCanvas
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
Could not find the main class: demos.gears.Gears. Program will exit.
…のように、同じ結果のようです。
jogl-demos.jarはE:\Program Filesの下に置いてあります。
どこのjava.exeが使われているか知る方法はありますか?ちなみに
E:\Program Files>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)
です。
0765デフォルトの名無しさん
2009/12/21(月) 16:47:543次元立体として表示したいのですが、どうやればいいかわかりません。
サンプルコードやいいサイトがあったら教えてください
0766デフォルトの名無しさん
2009/12/21(月) 17:32:55http://www.google.co.jp/search?hl=ja&q=%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0
0767デフォルトの名無しさん
2009/12/21(月) 17:39:24ありがとうございます。
初心者なので、できればサンプルなどある所はないでしょうか?
0768デフォルトの名無しさん
2009/12/21(月) 17:54:040769デフォルトの名無しさん
2009/12/21(月) 19:11:130770デフォルトの名無しさん
2009/12/21(月) 19:42:45まじですか!?
探してみます!!
0771デフォルトの名無しさん
2009/12/24(木) 14:08:59デフォルトのデプスバッファを割り当てる
(共有する)ことは可能でしょうか?
OpenGLのアプリケーションのプラグインで、
特定のオブジェクトの描画のみを担当するのですが、
それまでの描画結果の深度でデプステストしつつ、
そのオブジェクトのみにポストエフェクトをかけたいんです。
システム全体の描画処理に介入できないため、
他のオブジェクトの描画先をFBOにすることは
できません。
0772デフォルトの名無しさん
2009/12/25(金) 10:11:54glslDevilとかGLInterceptとかは?
俺は使った事ないんだがフリーだし、前者はよく更新してるし良さそうだが
0773デフォルトの名無しさん
2009/12/25(金) 18:20:30床井先生のサイトを下にMultisampleを使う半透明処理をしました。
nVidiaのコントロールパネルでの設定も行い、床井先生の
サンプルプログラムも自分のプログラムもきちんと半透明処理が
できていたのですが、今日になって同じPCで再コンパイルをしたら
どちらも半透明にならなくなってしまいました。
コントロールパネルの設定も確認したのですが、変わっていません。
どなたか原因がわかりますでしょうか?
ちなみに、グラボはQudro FX 570Mです。
0774デフォルトの名無しさん
2009/12/25(金) 18:24:00早速ですが、自己解決してしまいました。
どうやらデュアルディスプレイにしていると、半透明処理ができないらしく、
シングルディスプレイに戻したらきちんと半透明処理ができました。
とりあえずプログラム的には解決できたのでよかったのですが、
そういうものなのでしょうか?どなたかご存知でしたらご教授ください。
0775デフォルトの名無しさん
2009/12/25(金) 18:42:59我が家のChrome430はシェーダだけがなぜか速くて重宝しているが、
デュアルディスプレイにするとvsync同期のバッファ切り替えが効かなくなる。
おそらく待ち回路が一つしかないせいだと推測している。
その環境だとMultiSample用のバッファとマルチディスプレイ用の資源がなにがしか競合しているのかと。
0776デフォルトの名無しさん
2009/12/25(金) 18:51:58特殊なのは許してください。
いろいろと競合するものなんですね。今後はこういう点についても
気をつけていきます。
0778デフォルトの名無しさん
2009/12/25(金) 19:57:320779デフォルトの名無しさん
2009/12/25(金) 20:09:300780デフォルトの名無しさん
2009/12/25(金) 20:12:310781778
2009/12/25(金) 20:22:230782デフォルトの名無しさん
2009/12/25(金) 20:23:330783デフォルトの名無しさん
2009/12/25(金) 21:23:350784デフォルトの名無しさん
2009/12/26(土) 06:25:21制作中のFPSに組み込もうとボーンアニメーションの実装中。
毎回フレームごとに各頂点の座標を再計算して描画するのと、
初期化時点で1フレーム1フレームの頂点配列を用意しておく
のとでは、どっちが一般的な作りなんだろうか?
大体1000ポリ前後のキャラが4〜6体ほどの描画を予定。
メモリとCPUの兼ね合いなんだと思うけども、普通はどっちなのか
あるいは他に画期的な方法があるのなら教えて貰いたい
0785デフォルトの名無しさん
2009/12/26(土) 10:31:53あらかじめ全キャラの全アニメーションパターンを計算して
保存しておくのはメモリ的に無理だろう。
0786デフォルトの名無しさん
2009/12/26(土) 11:51:570787785
2009/12/26(土) 12:19:12No.
あらかじめ持っているのはキーフレーム毎にジョイント(ボーン)の姿勢ポーズだけ。
そこから毎フレーム、メッシュの全頂点の変形後の位置を計算する。
>>784はこの変形後の頂点をあらかじめ全て計算して持っていたらどうかと聞いているが、
キーフレーム数x全頂点数のメモリが必要になるので現実的には無理。
(どうせ途中を補完しないといけないし)
0789785
2009/12/26(土) 16:04:02日本語で読めるまともな解説と実装例がないよな。
床井先生あたりちゃんとした解説を書いてアップしてくれないだろうか……
0790デフォルトの名無しさん
2009/12/26(土) 16:36:500791デフォルトの名無しさん
2009/12/26(土) 17:55:32まぁソフトの実装よりデータ用意する方が大変なんだけどね。
ゲームプログラマーになる前に〜の本とかそういう部分をカバーする本だと
思ったけどスキニングは載ってないのかな
0792デフォルトの名無しさん
2009/12/26(土) 19:38:380793デフォルトの名無しさん
2009/12/26(土) 22:15:57ゲームプログラマーになる前に〜はロボファイトまでなので、
スキンアニメーションの解説は無し。解説逃げたな。
>>792
その本読んだ事無いけど違うと思う。たぶんDirectXのモーション付きのXファイルを
どうやって表示するかを書いてあるだけだと思う(実はこれが意外にめんどくさい)。
OpenGLにそんな機能はないので全て自分で実装することになる。
0794デフォルトの名無しさん
2009/12/26(土) 22:18:11JOGLの他にLWJGLというのもあるみたいだけど
どっちがいいの?
ゲーム作るのに使うならLWJGLの方が良いのかな。
0795デフォルトの名無しさん
2009/12/26(土) 22:31:050796デフォルトの名無しさん
2009/12/26(土) 23:38:120797デフォルトの名無しさん
2009/12/27(日) 22:13:46ついでなので情報出しとく。
デュアルディスプレイだとFBOへの描画が極端に遅くなるみたい。
WindowsXP64bit + GTX280, 8800GT, 9600で確認した。
0798デフォルトの名無しさん
2009/12/28(月) 19:02:20それ以外だとGems1とTheCgTutorialにも。
実装例だとどこぞの3Dエロゲのツールとか。
一般的にシェーダでやるものだから、教えるにしても前提条件が割と高いんだよね。
教材データも必要だし。
0799デフォルトの名無しさん
2009/12/28(月) 21:37:27図がなく1ページしか解説がない。あれ読んで理解できたらエスパー認定できる。
今となってはCgを学ぶ価値もないので人に勧めちゃダメ。
0800デフォルトの名無しさん
2009/12/28(月) 21:57:200801デフォルトの名無しさん
2009/12/28(月) 22:25:38ジオメトリシェーダに in 変数
というところだと思う
0802デフォルトの名無しさん
2009/12/30(水) 03:13:17なるほどGLSLはまだ使い始めたばかりですが、勉強して作っていきたいと思います。
0803デフォルトの名無しさん
2009/12/31(木) 13:45:47>>793
>>798も言ってるけど、3D格闘ゲームプログラミングは
xファイルからモーションデータまでローダを自前で作って、
スキニングも全部自前で実装してる。但し、CPUでだけど。
後はGLSLの知識+αでGPUに落とし込めばいけるさ。
0804デフォルトの名無しさん
2009/12/31(木) 21:49:49できれば日本語でお願いします。でもAmazonで探した限りちゃんとした本はなさそうです。
英語でも良いです。
0805デフォルトの名無しさん
2009/12/31(木) 22:32:33それにシェーダ言語ってなるとHLSLとかと割と似ているから、それを参考にすれば結構できるようになると思う。
0806デフォルトの名無しさん
2010/01/01(金) 17:28:51いや勉強になるなぁ
0807デフォルトの名無しさん
2010/01/01(金) 21:18:370808デフォルトの名無しさん
2010/01/01(金) 21:29:170809デフォルトの名無しさん
2010/01/01(金) 21:35:30でもやっぱり分かりにくい orz
> ボーンを対象形状付近に配置する変換を M0, M1 とします.(中略)
> このボーンを時刻 t に応じて変形する変換を B0(t), B1(t) とします.
一番大事な行列 M と B の定義が馬鹿には解らないのでもう少し解説して欲しい。
M = ボーン(ジョイント)を原点としたジョイント空間からモデル空間への変換行列
M^-1 = その逆行列でモデル空間からジョイント空間への変換
P = モデル空間での頂点の座標とすれば、P' = M^-1 x P が
ジョイント空間での頂点の座標に変換できる。
従ってスキニングは
1. 基本姿勢(バインドポーズ)のモデル空間からジョイント空間に変換 M^-1xP
2. カレントポーズを計算して B = BxBxBx....
3. ジョイント空間からモデル空間に変換 P' = BxM^-1xP
となる。
BxM^-1はフレームの最初に計算しておけるので、ボーンの数だけ全部計算して保存しておく(=マトリックスパレット)。
あとはこれをGPUに送ってやれば、基本姿勢の頂点座標に行列一発かけるだけでアニメーション後の頂点座標になる。
ちきしょう、俺にも書かせろw
0810デフォルトの名無しさん
2010/01/01(金) 21:38:39http://marina.sys.wakayama-u.ac.jp/~tokoi/
卒業生の進路
この間, 卒業生から「自分がリードプログラマを務めた」というゲームソフトが送られてきました. もうね, 鳥肌が立ちましたよ.
自分のやっていることが学生の皆さんにとって役に立っているかどうか正直言って自信が無かったんですけど, 本当にそういう仕事してるんだ.
すげー. みんなあんまり連絡くれないし,
0811デフォルトの名無しさん
2010/01/01(金) 21:52:51class Bone {
float position[4]; // カレントのボーンの平行移動成分
float rotation[4]; // カレントのボーンの回転成分
float animation[16];
float length; // カレントのボーンのスケーリング成分
const Bone *parent; // 親ボーン
...
この animation[16] というのは何を入れておく所?
バインドボーズの逆行列(M^-1)だと思うのだけれど、
それにしては名前が変。あとスケルトンとポーズを1つのBoneクラスにまとめるのは実用上どうかと。
(ゲームだとキャラ10体出すとスケルトン1にポーズ10だから、分離していた方が良い。)
まあゲーム作る訳じゃないから良いか
0812デフォルトの名無しさん
2010/01/01(金) 23:18:43ポリゴンならカリングすれば消せるのだけど、点の場合は黒く塗りつぶされて
しまうようです。
0813デフォルトの名無しさん
2010/01/01(金) 23:57:030814デフォルトの名無しさん
2010/01/01(金) 23:59:41glEnable(GL_LIGINGとGL_LIGHT0)
glMaterialfv(〜〜〜)
glPointSize(3)
glBegin(GL_POINTS)
glNormal3d(1, 0, 0)
glVertex3d(0, 0, 0)
0815デフォルトの名無しさん
2010/01/02(土) 00:08:25シェーダで消せば?
0816デフォルトの名無しさん
2010/01/03(日) 14:12:11標準のシーングラフとかあっても良いと思うのだが……
何か無いですか?
0817デフォルトの名無しさん
2010/01/03(日) 14:51:510818デフォルトの名無しさん
2010/01/03(日) 14:54:29そういえば、linuxでdirectx apiって使えないよね。
0819デフォルトの名無しさん
2010/01/03(日) 15:10:570820デフォルトの名無しさん
2010/01/03(日) 15:26:51具体的には何が良いですか?
モーション付きのモデルがロードできて、
シーングラフを構成できる奴を教えてください
それなりに有名で使用実績が必要です。
こういう事を言う人は多いのですが
具体例を聞くととたんに黙り込んでしまいます。
0821デフォルトの名無しさん
2010/01/03(日) 15:37:49別に遊びでdirectxやりたいわけじゃないからそういうアホな方法は遠慮しとくは。
0822デフォルトの名無しさん
2010/01/03(日) 15:39:40ぐだぐだいうなら素直にMSを使え
0823デフォルトの名無しさん
2010/01/03(日) 15:40:43PLIB
0825デフォルトの名無しさん
2010/01/03(日) 16:00:00817じゃないけど、NVSG(現SceniX)とかはどう?用件は満たしてると思うけど。
http://developer.nvidia.com/object/scenix-details.html
もし、OpenGLでゲームを作るってことが優先順位が高いならOgre3Dとかの方がいいかもしれないけど。
0826デフォルトの名無しさん
2010/01/03(日) 16:23:26SceniX
0827デフォルトの名無しさん
2010/01/03(日) 16:44:110828820
2010/01/03(日) 17:03:460829デフォルトの名無しさん
2010/01/03(日) 17:05:090830デフォルトの名無しさん
2010/01/03(日) 17:19:48gpuも進化してるし、今実用的なのを考えるなら素直にMSにしろ。
高々windows os代3万程度だろ。
linuxはnative ioはcかruby/pythonで使い捨て、ロジックはjavaで実装して他段レイヤーで抽象化しとくしかない。
cg とかglslとか次から次ぎともう嫌だろ?
仕事であたりまえのように使ってるならまだしも、openglの奴らは未だにOOP的(モジュール的というか)な考えが出来る奴が少ないしライブラリの品質も未だに3流大学の研究所レベルを出てない。
どうせgpu interfaceなだけだし、なんならさしあたりwin限定でdirectx apiをjavaでラップすれば十分。
0831デフォルトの名無しさん
2010/01/03(日) 17:22:37具体例を出すととたんに条件を増やしてしまいます。
# っていうか、>>816 でいう所の
# >>820 の条件にあたるような立派な標準のシーングラフってあるんだっけ?
0832デフォルトの名無しさん
2010/01/03(日) 17:23:33# >>820 の条件にあたるような立派な標準のシーングラフってDirectXであるんだっけ?
0833820
2010/01/03(日) 17:39:36OpenGLの拡張機能をちまちま検索したり、
せっかく覚えたCgが役立たずになったり、
対応するモデルデータを拾ってきてモーション付けたら
意味不明のエラーがでて動かなかったりするのに疲れたんだお。
よく定義されたフリーでクロスプラットフォームなC++かRubyのライブラリが欲しいんだお
ネットで拾ってきたモデルが何の問題もなくロードできて、
それなりに見栄えのする簡単なシーンが作れればいいんだお。
(でもシェーダーだけは書かせて)
チュートリアルとサンプルプログラムは日本語で読みたいんだお。
サンプルのモデルデータもいっぱい欲しいお。
、というのが全部そろってるOpenGLの上位ライブラリ無いですかね?
0834デフォルトの名無しさん
2010/01/03(日) 17:46:40豆腐で我慢しましょうね
0835デフォルトの名無しさん
2010/01/03(日) 18:18:35openglの上位ライブラリがdirectxと考えられないか?
おまえに必要なのは、openglのライブラリじゃなくてOOP的な思考方法。
まずその旧式な考え方を変えたほうがいいだろう。
0836デフォルトの名無しさん
2010/01/03(日) 18:22:510837デフォルトの名無しさん
2010/01/03(日) 18:27:46学部生程度ならライブラリの(一部の)実装とアルゴ研究っていう卒論でいけるわけで、日本だとそういうことやって、かつ研究室の成果として公開してるのないでしょ。
tronと同じでopengl(renderer)のセンスある若いのもどんどん日本を離れて日本はこの分野でも孤立すると思うよ。
先生自体がプログラムの設計論も含めてソフトウェアのことをまったくと分かってないってのが大きいんだろうけど、無能な先生しかいないしこの環境のままじゃ10年後の日本も世界的にも低レベルのままだろうね。
0838820
2010/01/03(日) 18:32:46しかも卒業したらATIやnVIDIAに入って、さらにすごいのを作ってたりする。
日本だと無いね。まあCGの研究しているところ自体少ないが。
0839デフォルトの名無しさん
2010/01/03(日) 19:06:00atiとかに入ったりしないな
頑張ったところでせいぜいベンチャーの携帯ゲーム会社かNTTdokomoの下請け(いわゆるIT土方)
0840デフォルトの名無しさん
2010/01/03(日) 19:13:56それならそれで日本にとってはありがたいと思うけど。
0841デフォルトの名無しさん
2010/01/03(日) 20:19:040842デフォルトの名無しさん
2010/01/03(日) 20:22:15正解。
0843デフォルトの名無しさん
2010/01/03(日) 20:26:39ナイナイww
大学の先生&学生は質の高いライブラリを提供して欲しいというのは本当
今のままだと100年たってもPixarに勝てる気がしないわ。
0844デフォルトの名無しさん
2010/01/03(日) 20:27:520845デフォルトの名無しさん
2010/01/03(日) 20:45:54院生(後期)を何人かリーダで監督者(admin)にして、学部生を卒論研究と称してこき使って実装させれば2年で世界レベルのライブラリが作れる(但し汎用じゃなくてその先生の専門分野になりやすい)。
実際学部生なんか、バイトでゲーム会社のデバッグ要員なんだし、実習とコーディングが主なんだし、もっとアメリカの大学っぽい教育方法になったほうがいいと思うよ。
するとそのままゲイツとかジョブスみたいの、はたまたグーグルやフェイスブックみたいな若い企業が現れるだろうな。
0846デフォルトの名無しさん
2010/01/03(日) 21:04:08ライセンスはbsd,mitみたいなtitライブラリとか。
どうせ国税でやってるんだし、もうすこし教育ってのを考えて直して少しでも形に残るものを作っていくべきだと思うよ。
0847デフォルトの名無しさん
2010/01/03(日) 21:21:010848デフォルトの名無しさん
2010/01/03(日) 21:31:490849デフォルトの名無しさん
2010/01/03(日) 21:33:040850デフォルトの名無しさん
2010/01/03(日) 21:37:580851デフォルトの名無しさん
2010/01/03(日) 21:38:010852デフォルトの名無しさん
2010/01/03(日) 22:56:230853デフォルトの名無しさん
2010/01/03(日) 23:43:160854デフォルトの名無しさん
2010/01/03(日) 23:49:25東工大をTITと略すのはやめて!><
0855デフォルトの名無しさん
2010/01/04(月) 00:14:5212月の横浜を知ってると、やっぱ、一応同じ日本人として今の現状を嘆いてみたかっただけw
0856デフォルトの名無しさん
2010/01/04(月) 01:01:130857デフォルトの名無しさん
2010/01/04(月) 01:30:130858デフォルトの名無しさん
2010/01/04(月) 01:52:16例えばどこ?
言い出しっぺなんだしどこだか示すことぐらい出来るよね?!
0859デフォルトの名無しさん
2010/01/04(月) 01:57:530860デフォルトの名無しさん
2010/01/04(月) 02:02:35公衆無線LAN
0861デフォルトの名無しさん
2010/01/04(月) 02:03:230862デフォルトの名無しさん
2010/01/04(月) 03:26:30???
0863デフォルトの名無しさん
2010/01/04(月) 11:35:26ttp://www.asahi-net.or.jp/~yw3t-trns/opengl/version/index.htm
特に頂点とかプリミティブ定義の非推奨っぷりがひどいw
glのクラスライブラリ作ってる途中で、これまでglBeginとかのスタイルで組んできたんだが
やっぱり最初から作り直しでオリジナルシェーダベースにしたほうがいいんだろうか…
それともgluのプリミティブの互換として頂点データの渡されるgl_Vertexを信じて
gl_Vertex互換シェーダ+従来のプリミティブ定義のままでいいんだろうか…
0864デフォルトの名無しさん
2010/01/04(月) 12:23:31というかやっぱ固定機能のステートマシンはマルチスレッドとか考えると扱いづらいよね、
というところなのだろう。
0865デフォルトの名無しさん
2010/01/04(月) 13:03:050866デフォルトの名無しさん
2010/01/04(月) 13:07:33OpenGLはいらん機能が多すぎて使い物にならん。
0867863
2010/01/04(月) 14:41:34そうするとライブラリは用いるglslソースもある程度縛られてくるだろ?
シェーダ変えたら動かないライブラリとか、シェーダの変更が限定されるライブラリとかお�hるだろ
…まぁ、仮想関数で固定機能版とGLSL版としておけばいいか…
0868デフォルトの名無しさん
2010/01/04(月) 16:29:34glEnable ほにゃらら
で使えるようにしてくれると非常にありがたい。
馬鹿でもチョンでもアンチャ2並のCGが表示できるようにして欲しい。
0869デフォルトの名無しさん
2010/01/04(月) 18:12:470870デフォルトの名無しさん
2010/01/04(月) 19:03:432.xまでの固定パイプラインを全て網羅するラッパー作るのはかなり骨が折れるんではないかい?
0871デフォルトの名無しさん
2010/01/04(月) 23:59:23かといってプロジェクトぶち上げて人を募っても
需要が無くて集まらないだろうね
868は是非がんばって欲しいね
0872デフォルトの名無しさん
2010/01/05(火) 10:07:29> 馬鹿でもチョンでもアンチャ2並のCGが表示できるようにして欲しい。
こういった事を比較的低レベルなグラフィックAPIであるOpenGLに求めるのは筋違い(スレ違い)では。
一応、こういうMiddlewareで固定パイプ的にOpenGLからシェーダを使うこともできるけれど。
http://www.siliconstudio.co.jp/middleware/daikoku_yebis/daikoku.html
http://www.siliconstudio.co.jp/middleware/daikoku_yebis/yebis.html
ここで文句言ったり、嘆いたりすることが目的でなければ本来なにがしたいのかを考えて最適な
ソリューションを選択したほうがよいのではなかなと思うけど?
現世代のコンソール機のようなグラフィックスを使ったアプリケーションを自作したいならUDKを検討
してみるとか。あれはあれでオーサリング環境に癖があるけど。
ラッパーライブラリを作ることが目的であれば頑張ってください。
0873デフォルトの名無しさん
2010/01/05(火) 10:09:57オブジェクト指向の発達した今なら多態性も簡単に実現できるが
openglはC言語だし、C言語で多態性を実現するためのステートマシンなのだろう。
描画先共有した状態でコンテキストを独立して取得できれば一番なんだろうけどね
0874デフォルトの名無しさん
2010/01/05(火) 12:03:53そういうライブラリの欠点は明らかで
1. 値段が高い
2. ソースが公開されてない
3. 移植性がない
4. 使用者が少ない
5. 周辺技術との接続性が悪い
と、採用する利点が少ない。
ハードで作っても良いしソフトでも良いけど、標準化の利点はこれらの欠点を駆逐する。
今の日本に必要なのはオープンソースの良くできたロイヤリティフリーな
グラフィックライブラリの整備だと思うね俺は。
その上でゲーム会社はゲーム作ったらいいし、家電のUIを作っても良いし
初音ミクが踊るソフトを作っても良い。
0875デフォルトの名無しさん
2010/01/05(火) 13:23:060876デフォルトの名無しさん
2010/01/05(火) 13:30:47いきなり glGetIntegerv (GL_MAX_TEXTURE_UNITS, &num) したら0しか返ってきません。
0877デフォルトの名無しさん
2010/01/05(火) 13:40:060878デフォルトの名無しさん
2010/01/05(火) 13:54:410879デフォルトの名無しさん
2010/01/05(火) 13:58:23よくわからんけど、コンテキスト作ってテクスチャユニット調べて不満だったら終了すりゃいいんじゃないの
0880デフォルトの名無しさん
2010/01/05(火) 15:08:49後3年ぐらいでフリーで定番なのが2,3個出てくるだろう。
それ以降の4、5年以降はレイトレの方に移行するから、もうラスタ系のアルゴに金出すのはいなくなると思うよ。
0881デフォルトの名無しさん
2010/01/05(火) 16:36:3310年後もOpenGLを使い続けているのはほぼ確実
0882デフォルトの名無しさん
2010/01/05(火) 17:09:47なんで移行しないの?
0883デフォルトの名無しさん
2010/01/05(火) 17:17:36俺はGLだろうなぁ・・・はぁ
0884デフォルトの名無しさん
2010/01/05(火) 17:32:21GLはあくまでコンテキスト上で動作するAPIで、グラフィックコンテキスト自体はOS依存
=コンテキストの有無を判断するのはGLでなくOSのする仕事
>>880
品質で言えばレイトレが無敵なのはわかる。だが世の流れは高品質<リアルタイムだし
技術還元を目指す研究所は今しばらくは現行のままでいくだろうね。
おまけにレイトレはもうネタが出尽くした感じで、進化するといえばレンダリング速度程度だろう
一方スキャンラインは拙いとこがあるからこそ、小細工で面白い事ができれば論文になるしな藁
ハードの革新があるまではGPGPU+プログラマブルシェーダが映画業界除いてシェア占め続けると思うぞ。
0885884
2010/01/05(火) 17:52:24OpenCLやGLSLでレイトレ実装したケースもあるのな。
ttp://www.clockworkcoders.com/oglsl/rt/index.html
openglからレイトレに移行というより
これまでと同じ流れで
opengl拡張機能でレイトレ→ハードウェア対応→標準化ってopenglの機能として含まれんじゃね?
0886デフォルトの名無しさん
2010/01/05(火) 17:58:14ただnVIDIAのOptiXの動画見てるとリアルタイムレイトレーシングは5年後くらいにはハイエンドに降りてきそうな感じ。
0887884
2010/01/05(火) 17:59:37ttp://gpurt.sourceforge.net/DA07_0405_Ray_Tracing_on_GPU-1.0.5.pdf
0888デフォルトの名無しさん
2010/01/05(火) 19:51:3910年前(1999年)はff7のポリゴンぐらいだったのが、ff13でほぼリアルタイムcgレンダリングになったでしょ。
ff13でもエフェクトでごまかしてるだけで低品質だなって感じはするけど、そろそろラスタ系アルゴの限界で今後は見た感じも含めて大きな進歩はないだろう。
0889デフォルトの名無しさん
2010/01/05(火) 20:01:13openglがレンダリング(ライブラリの集合)を目指すのか、directxと同じように統合プラットフォーム(マウスとかの入力や、audio,videoなど)を目指すのかによる。
昔のゼロックスやIBMみたいに企業が資本を出して研究所を作ればかなり進歩するだろうけど、今のように大学研究所(やnvidiaとか一企業)レベルならこの分野でもMS天国だろうと思うよ。
放射線スキャン技術とか医療用CTとか考えると国がこの分野に投資してもいいのかなって思うけど。
0890デフォルトの名無しさん
2010/01/05(火) 20:52:290891デフォルトの名無しさん
2010/01/06(水) 00:48:38DirectXなら何冊もあるのに…
マジレス求む
0892デフォルトの名無しさん
2010/01/06(水) 00:50:590893デフォルトの名無しさん
2010/01/06(水) 01:04:58いや、っていうか、そんなにOpenGLって下火なんですか???
小さい書店に置いてないのは仕方ないとして、
日本一の書店に置いてないっておかしいでしょう?
0894デフォルトの名無しさん
2010/01/06(水) 01:15:03スペースがかぎられてるんだから全部の本があるわけないだろ
あんたあたまおかしいの?
0895デフォルトの名無しさん
2010/01/06(水) 01:22:58クズに育て上げやがって碌なもんじゃねぇ
0896デフォルトの名無しさん
2010/01/06(水) 01:29:220897デフォルトの名無しさん
2010/01/06(水) 01:30:050898デフォルトの名無しさん
2010/01/06(水) 01:32:09いやいや、売れるならどんな馬鹿担当だろうが仕入れるだろ?
あんた耳の穴から脳味噌垂れ(ry
0899デフォルトの名無しさん
2010/01/06(水) 01:36:16Mobile界隈では大人気なのにな
0900デフォルトの名無しさん
2010/01/06(水) 01:37:14DirectXでopenGLに相当するのはDirect3D
openGLと一緒にDirectInput やDirectShow使ったっていいし、Direct3DXだって使えたりするのあるし。
あとDirectXってバージョン上がると廃止になったり関数仕様変わったりするからそのたびに売れるのかも
openGLは赤本1冊あればとりあえず大丈夫。だけどあれ高いからそんな在庫置かないのかもね
三省堂の本社って店舗なの?
0901デフォルトの名無しさん
2010/01/06(水) 01:38:400902デフォルトの名無しさん
2010/01/06(水) 01:40:05書店? 出版社だろ?
0903デフォルトの名無しさん
2010/01/06(水) 01:40:490904デフォルトの名無しさん
2010/01/06(水) 01:42:050905デフォルトの名無しさん
2010/01/06(水) 01:42:34ありがとうございます。
ああ、赤本ですか。古いヴァージョンのならPDFで持ってます。
なるほど、あれ(の最新ヴァージョン)さえ手に入れればいいんですね。
DirectXはそんな事情があったんですね。
三省堂の本店と言った方がよかったですね、もちろん店舗です。
0906デフォルトの名無しさん
2010/01/06(水) 07:25:51非常に読みにくい赤本か、床井先生の本ぐらいでしょまともなのは。
確かにモバイルでは頑張っているが……
0907デフォルトの名無しさん
2010/01/06(水) 14:48:57OpenGLをはじめるには、GLUTを使うのが普通なんでしょうか?
また、ある程度なれた場合はどういったものを使用しますか?
参考HP等の紹介をお願いします。
0908デフォルトの名無しさん
2010/01/06(水) 15:17:49まぁOpenGLの情報はC++とかが多いから若干C#とOpenTKに向けて読み替える必要があるが。
0909デフォルトの名無しさん
2010/01/06(水) 15:30:15ずっとGLUTでオーケー。それで困ることになったらその時に考えればいい
0910907
2010/01/06(水) 15:34:33当面はGLUTでいきます。どうもです。
0911デフォルトの名無しさん
2010/01/07(木) 18:48:09一人でコツコツ組む人に取っては、また1からあの複雑なアーキテクチャを
おさらいするのは、物凄く茨の道に見えてしまいます。
glbigen()〜glend()が無くなると、途端に不安になります。
時間ばっかり喰っちゃいます。
どんな薬を飲んだら良いですか?
0912デフォルトの名無しさん
2010/01/07(木) 18:58:460913デフォルトの名無しさん
2010/01/07(木) 19:09:36代わりにシェーダとか勉強しろってことらしいけど
シェーダ使ったのサンプルでもglbeginとか使って立方体作ったりしてるし
わけわかめ
0914デフォルトの名無しさん
2010/01/07(木) 20:41:05でも前より色んなことができる
もうそれでいいじゃないか
0915デフォルトの名無しさん
2010/01/07(木) 20:44:46この変更はESでは実施済み。
なんでこうしたかと言うと、
・プログラマのミスあるいは悪意によってglBeginを2度連続で入れるといった例外が消せる
・マルチスレッドにしたときにアトミック操作の範囲が明白になる
・単純に関数の呼び出し回数が減って速度が上がる
といった理由から。
0916デフォルトの名無しさん
2010/01/07(木) 21:24:13サンプルがいっぱいあれば不満はでなくなると思うよ。
0917デフォルトの名無しさん
2010/01/07(木) 22:13:54glBeginとかのイミディエイトモードは廃止された。
頂点情報は全て頂点配列、VAO、VBOのどれかで転送する。
シェーダー使ったサンプルでglBeginとかを使ってるのはOpenGL2.0/2.1だろう。
glBegin等は3.0で廃止予告、3.1で完全廃止されたが、3.2では前方互換コンテキストでのみサポートされる。
0918デフォルトの名無しさん
2010/01/08(金) 11:28:18と言う関数の説明が
Multiplies this transformation from the right by the given transformation.
となっているのですが、これは現在の変換行列をT、引数の変換行列をT'とした場合、
M = T'T
M = TT'
のどちらを意味してるのでしょうか???
OpenGLでpostなら T'T のような気がするのですが、英語的には TT' ですよね???
0919デフォルトの名無しさん
2010/01/08(金) 12:01:300920デフォルトの名無しさん
2010/01/08(金) 12:10:22DirectXと同じように座標ベクトルを横ベクトルとして扱って
行列をベクトルの右からかけるという流儀で説明しているんだろうね。
0921デフォルトの名無しさん
2010/01/08(金) 12:23:390922デフォルトの名無しさん
2010/01/08(金) 12:35:580923デフォルトの名無しさん
2010/01/10(日) 01:53:08書き込み先アルファ値が書き込み元アルファ値で描かれてしまうのですが、
これを、もともとの書き込み先のアルファ値を保持しての描画を
行うことはできますでしょうか?
0924デフォルトの名無しさん
2010/01/10(日) 10:10:21FBOに限らずそうだと思うけど、glColorMaskか、
使えたらglBlendFuncSeparateで書き込み制御するのはどう?
0925923
2010/01/10(日) 13:48:29ありがとうございます。
glBlendFuncSeparate初耳でした。
ググってみたら、英語ドキュメントしか見つからなかったので、
これから読みほどいてみようと思います。
glColorMaskも試してみます
0926デフォルトの名無しさん
2010/01/11(月) 00:25:55なんか癖があるというか使いにくかった気がする。
glColorMask の方が素直でいいと思う。
0927デフォルトの名無しさん
2010/01/11(月) 23:37:02polarView( GLdouble distance, twist, elevation, azimuth )
{
glTranslated(0.0, 0.0, -distance);
glRotated(-twist, 0.0, 0.0, 1.0);
glRotated(-elevation, 1.0, 0.0, 0.0);
glRotated(azimuth, 0.0, 0.0, 1.0);
}
これだと原点を中心にdistance下がって視点を動かすことになりますよね?
これにカメラ移動をつけて見たいところでpolarViewに切り替えると考えるとどういったソースになるのでしょうか?
0928デフォルトの名無しさん
2010/01/12(火) 00:56:52LookAtの直後くらいで呼べばいいんじゃない?
0929デフォルトの名無しさん
2010/01/12(火) 12:03:35stalinなら速度も気にならないし
問題はstalinの吐くcコードが読めない
0930デフォルトの名無しさん
2010/01/13(水) 18:22:03OpenGL標準なのでGL/gl.hだけでいけるはずですが、コンパイラにないと怒られます。
OpenGLのバージョンは多分3.2です。
OpenGL renderer string: GeForce 8500 GT/PCI/SSE2
OpenGL version string: 3.2.0 NVIDIA 190.42
0931デフォルトの名無しさん
2010/01/13(水) 18:29:110932デフォルトの名無しさん
2010/01/13(水) 18:31:41/usr/include/GL/glext.h:3492:GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *);
http://www.opengl.org/sdk/docs/man/xhtml/glGenBuffers.xml
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=267806
ここら辺を参考に
0933デフォルトの名無しさん
2010/01/13(水) 19:45:01でも何でOpenGLの標準機能が変なライブラリ入れないと使えないの。おかしくね
0934デフォルトの名無しさん
2010/01/13(水) 20:09:18MSがサボっているから。
0935デフォルトの名無しさん
2010/01/13(水) 20:11:30結局glew入ってるけど
0936デフォルトの名無しさん
2010/01/13(水) 20:23:380937デフォルトの名無しさん
2010/01/13(水) 22:05:120938デフォルトの名無しさん
2010/01/14(木) 09:20:48Windowsならglew入れなくてもwglGetProcAddress使えば関数を持ってこられるよ。
glewは最新の拡張が追加されてから対応するまでに時間がかかるからなぁ…。
0939デフォルトの名無しさん
2010/01/14(木) 14:34:510940デフォルトの名無しさん
2010/01/15(金) 00:55:11Vector3やmatrixをクラス化して
openGL用(float型)に適したライブラリ(もしくはヘッダファイル)
って何かありませんか?
0941デフォルトの名無しさん
2010/01/15(金) 00:59:240942デフォルトの名無しさん
2010/01/15(金) 11:37:49D3DX
0943デフォルトの名無しさん
2010/01/15(金) 12:58:540944デフォルトの名無しさん
2010/01/15(金) 13:06:490945デフォルトの名無しさん
2010/01/15(金) 13:52:59みんな自家製ライブラリを持ってる気がする
0946デフォルトの名無しさん
2010/01/15(金) 16:44:17ちょっと公開してくれません?
0947デフォルトの名無しさん
2010/01/15(金) 18:17:400948デフォルトの名無しさん
2010/01/15(金) 18:21:23他人ライブラリで良いのならhumus氏のFramkeworkとかは
0949デフォルトの名無しさん
2010/01/15(金) 18:23:150950デフォルトの名無しさん
2010/01/15(金) 23:38:59bulletの中のvectormathライブラリはどう?
bulletからは分離されているし、スカラ版もSSE版もある。
http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=&f=&t=1322
0951デフォルトの名無しさん
2010/01/16(土) 01:45:170952デフォルトの名無しさん
2010/01/16(土) 01:46:520953デフォルトの名無しさん
2010/01/16(土) 10:17:430954デフォルトの名無しさん
2010/01/16(土) 10:41:200955デフォルトの名無しさん
2010/01/16(土) 10:44:170956デフォルトの名無しさん
2010/01/16(土) 10:47:17glBufferDataとglVertexAttribPointerにもあるんだけど
どういうこと?
0957デフォルトの名無しさん
2010/01/16(土) 11:08:240958デフォルトの名無しさん
2010/01/17(日) 11:16:28ワールド座標でx、z平面に置いたポリゴンに光を上から垂直に当てました。
glClear GL_COLOR_BUFFER_BIT
glMatrixMode GL_MODELVIEW
glLoadIdentity
gluLookAt 0,10,10, # from
0,0,0, # to
0,1,0 # up
glLight GL_LIGHT0, GL_POSITION, [0,-1,0,0]
glBegin GL_TRIANGLE_STRIP
glMaterial GL_FRONT_AND_BACK, GL_DIFFUSE, [1,1,1]
glVertex 10,0,-10
glVertex 10,0,10
glVertex -10,0,-10
glVertex -10,0,10
glEnd
期待しているのは完全な白(1,1,1)なのですが、とても暗い(0,0,0)?です。
何が間違えているのでしょうか。
0959デフォルトの名無しさん
2010/01/17(日) 12:22:19予想
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
0960デフォルトの名無しさん
2010/01/17(日) 12:37:09あと法線の設定をしなければならない。
0961958
2010/01/17(日) 13:08:29あとどうもライトの方向が自分の理解と逆らしい。
w=0を指定するとx,y,zの方向を照らす平行光源になる、で良いんですよね?
(0,-1,0,0)がy軸上から下。
何か+ーが逆っぽいのですが。
0962デフォルトの名無しさん
2010/01/17(日) 13:27:59gluLookAtの最後の3つの引数でy軸の上方向を視界の上方向としてるんだから、ライトのポジションには0, 1, 0, 0を指定することで四角形の上空にある光源になる。
0963デフォルトの名無しさん
2010/01/17(日) 13:35:230964958
2010/01/17(日) 13:52:10"「w=0」であれば(x,y,z)方向の平行光線の設定になります。"
って書いてあったとです。床井先生……
0965デフォルトの名無しさん
2010/01/17(日) 14:49:170966デフォルトの名無しさん
2010/01/17(日) 15:21:06>>1のテンプレの関連サイトの3DLabsはそろそろ成仏させてあげて
0967デフォルトの名無しさん
2010/01/17(日) 20:05:293Dモデルを読み込みたいのですが、環境依存を避けるために、OpenGLでは
3Dモデルの読み込みを標準でサポートしていないらしく、
色々検索してみたのですが情報が見つかりませんでした。
どういう手段を取ればよいのでしょうか?
0968デフォルトの名無しさん
2010/01/17(日) 20:09:46ダウト。
0969デフォルトの名無しさん
2010/01/17(日) 21:46:18手軽に使えるライブラリは世の中に存在しないので自作するのがセオリー
ただまともな仕様があるファイルフォーマットはないので素直に諦めるのが一番良い。
0970デフォルトの名無しさん
2010/01/17(日) 22:02:150971デフォルトの名無しさん
2010/01/17(日) 22:30:56適当にググっただけでも色々と情報が出てくるけどな。
0972967
2010/01/17(日) 22:40:37見つかったとしてもXNAやDirectX用だったり、C++用だったりと、
かすってるだけで惜しいものばかりでして……。
GLSharpは人気のようですが、Windows専用らしいのでよろしくありません。
(どうせWindows用にするのならSlimDXを使います)
C++用のものをC#向けに書き換えるという手もありますが、
3Dモデルを読み込むプログラムの長さは相当なもので、
かなりの手間がかかるのでできれば避けたいです(どうしてもほかに手がなければ検討します)。
0973デフォルトの名無しさん
2010/01/17(日) 22:51:070974デフォルトの名無しさん
2010/01/17(日) 23:05:00C#のは確かにないわ。でも元々OpenGL自体、C#のサンプルなんてOpenTKやTao以外ではほとんど見れないんだから、C++のを読み替えて勉強するだろ?
0975デフォルトの名無しさん
2010/01/17(日) 23:16:41素直にDirectX使おう
0976デフォルトの名無しさん
2010/01/17(日) 23:24:050977デフォルトの名無しさん
2010/01/17(日) 23:32:360978デフォルトの名無しさん
2010/01/17(日) 23:42:050979デフォルトの名無しさん
2010/01/18(月) 00:05:560980デフォルトの名無しさん
2010/01/18(月) 00:26:550981デフォルトの名無しさん
2010/01/18(月) 00:44:300982デフォルトの名無しさん
2010/01/18(月) 02:52:260983デフォルトの名無しさん
2010/01/18(月) 06:05:08それまでは独自のアプリ(関係ないけどphotoshとかautocadとか)やopengl,directx向け専用ライブラリでやるのがいいよ。
java系の優秀な開発者たちが携帯関係で必要だからデスクトップの方に目を向けだしているから、3年後ぐらいには汎用性高いのがいくらか出てくると思う。
0984デフォルトの名無しさん
2010/01/18(月) 09:37:230985デフォルトの名無しさん
2010/01/18(月) 10:07:43君の方がつまらんわw
0986デフォルトの名無しさん
2010/01/18(月) 13:09:320987デフォルトの名無しさん
2010/01/18(月) 20:08:12NVIDIAやATIのサイトは抜かして、
必読書とかチュートリアルへのリンクを張ろう。
0988デフォルトの名無しさん
2010/01/18(月) 20:26:010989デフォルトの名無しさん
2010/01/18(月) 20:27:030990デフォルトの名無しさん
2010/01/18(月) 23:19:070991デフォルトの名無しさん
2010/01/19(火) 04:06:343Dモデルっていろいろあるし、それぞれがかなり複雑、ってことは知らないんだろうな。
3Dプログラムって馬鹿にはできないよ。君には無理。あきらめな。
0992デフォルトの名無しさん
2010/01/19(火) 07:27:500993デフォルトの名無しさん
2010/01/19(火) 08:01:400994デフォルトの名無しさん
2010/01/19(火) 09:55:080995デフォルトの名無しさん
2010/01/19(火) 19:29:45以下に>>1を次スレの1を貼るから誰か頼む。
0996デフォルトの名無しさん
2010/01/19(火) 19:31:14禁止事項
・「OpenGL終了」系のまず価値否定ありきの主観発言(客観的な懸念要素を挙げた上での建設的議論は可)
・学歴・理系か文系かに関連する差別発言
・その他の荒らし全て
これらは付き合うだけ無駄なので無視しましょう。
- 前スレ -
OpenGLスレ Part13
http://pc12.2ch.net/test/read.cgi/tech/1247349324/
- 関連サイト -
http://www.opengl.org/
http://www.mesa3d.org/
http://developer.nvidia.com/
http://www.ati.com/developer/
- 過去スレ -
Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/
Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/
Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/
Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/
Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/
Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
0997デフォルトの名無しさん
2010/01/19(火) 20:17:20異論あるかも。1000までいったら次スレ立てます。
クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。
現在のバージョンは3.2
http://www.opengl.org/
== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glut: ウィンドウを表示するのに必要なライブラリ。さすがに古くさい
・glew: これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。
== 必読書 ==
・OpenGLプログラミングガイド 原著第5版 (通称赤本)
・OpenGL(R) Reference Manual (通称青本)
・OpenGL Shading Language (通称だいだい本)
・OpenGL(R) SuperBible: Comprehensive Tutorial and Reference
・OpenGL ES 2.0 プログラミングガイド
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
== 直接は関係ないがあると便利 ==
・ゲームプログラミングのための3Dグラフィックス数学
== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
NeHe: http://nehe.gamedev.net/
== 前スレ ==
Part13: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
0998デフォルトの名無しさん
2010/01/19(火) 20:19:07Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
(中略)
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
== C/C++以外から使うには ==
Rubyから --> ruby-opengl
Pythonから --> PyOpenGL
Javaから --> JOGL
JavaScriptから --> ???
Haskellから --> ???
== モデルデータ ==
三角形を表示するのに飽きたらこれ。スタンフォードバニーが表示できたらレンダラー童貞卒業だ。
・Stanford大学: http://graphics.stanford.edu/data/3Dscanrep/
一番有名なうさぎのモデルほか。PLY形式。
== パーサー ==
OpenGL自体は3Dのファイルフォーマットを何も規定していないが、
何らかのフォーマットを読めないと面白くないので。以下は一例。
(他に使いやすいライブラリがあったらスレで紹介してください)
・TriMesh2: http://www.cs.princeton.edu/gfx/proj/trimesh2/
PLY,OBJほか
・GLMetaseq: http://kougaku-navi.net/
メタセコイア、だと思うのだが使った事がないので知らない
0999デフォルトの名無しさん
2010/01/19(火) 20:19:341000デフォルトの名無しさん
2010/01/19(火) 20:52:0210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。