OpenGLスレ Part13

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
クロスプラットフォーム 3D API OpenGLに関する話題を扱うスレッド。

禁止事項
・「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落ち)
2デフォルトの名無しさん:2009/07/12(日) 06:56:54
3デフォルトの名無しさん: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と連携できる事も考えると、今後はダークホース的選択肢に?
4デフォルトの名無しさん: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)
5デフォルトの名無しさん:2009/07/12(日) 06:59:34
850:デフォルトの名無しさん :sage:2009/06/26(金) 01:22:49
毎年恒例の、課題提出時期の質問ラッシュな予感!
6デフォルトの名無しさん:2009/07/12(日) 11:53:22
>1
7デフォルトの名無しさん:2009/07/12(日) 12:42:30
>>5
テンプレかwww
8デフォルトの名無しさん:2009/07/13(月) 01:41:59
glMultMatrixf では float [16] なのに、GLUT の vvector.h では [4][4] なのが辛いなあ
9デフォルトの名無しさん:2009/07/13(月) 01:50:32
そんな内部ヘッダを中途半端に流用するから悪いんだろ
MULTMATRIXマクロでも使ってろってこった
10デフォルトの名無しさん:2009/07/13(月) 02:39:39
>>8
vvector.hなんて知らないけど、これじゃだめ?
glMultMatrixf( &(matrix[0]) );
11デフォルトの名無しさん:2009/07/13(月) 03:24:34
>>10
それも良いけど、行と列の取り方が違うから、一度行列を転置させなきゃいけなくて、
些細なことだけど、結局手間は変わらないんだよね残念ながら

なんで GLUT 付属のマクロでOpenGLと扱いが違うのか謎
12デフォルトの名無しさん:2009/07/13(月) 03:54:45
うっへ、自己解決したスマソ
計算の順番変えれば良いだけだよな……
13デフォルトの名無しさん:2009/07/13(月) 03:58:21
というか回答を鵜呑みにするならglMultTransposeMatrixで足りるはずだが
14デフォルトの名無しさん:2009/07/13(月) 11:02:17
ごめ、そんな関数が有るって今知った
ホントスレ汚しスマン
15デフォルトの名無しさん:2009/07/13(月) 12:56:32
前スレの終盤にくらべたら、水滴が落ちた程度のことだ。
16デフォルトの名無しさん:2009/07/15(水) 02:16:47
ttp://ruffnex.oc.to/kenji/gl/の解説を見ながら
ttp://ruffnex.oc.to/kenji/src/xi.cppを弄ってますが
2点ばかりわからない点があるので教えてください。

1点目:
このままのソースではX軸周りは回転を行わず平行移動だけなので、
display()の中で、直前の回転方向を保存しておき、RotateCube()の
第5引数に渡してみたところ、一応回転するようにはなりました。
しかしよくみると、X軸→Z軸→X軸と回転させると面の色の変化が
おかしなことになってしまいます。
これはどう考えて解決するべきでしょうか?

2点目:
現在接地している面の色を知るためにはどう考えて解決するのが
一番効率的でしょうか?
17デフォルトの名無しさん:2009/07/15(水) 03:44:50
カラーに関しては、
void BottomColor(GLdouble* bColor, GLdouble **vertex)
{
GLdouble color[][3] = {
{ 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 },
{ 1.0, 1.0, 0.0 }, { 1.0, 0.0, 1.0 }, { 0.0, 1.0, 1.0 },
};

int face[][4] = {
{ 0, 1, 2, 3 }, { 1, 5, 6, 2 }, { 5, 4, 7, 6 },
{ 4, 0, 3, 7 }, { 4, 5, 1, 0 }, { 3, 2, 6, 7 },
};
int i;
for(i=0; i < 6; i++){
if(vertex[face[i][0]][1] < 0.0 && vertex[face[i][1]][1] < 0.0 && vertex[face[i][2]][1] < 0.0 && vertex[face[i][3]][1] < 0.0)
break;
}
bColor[0] = color[i][0];
bColor[1] = color[i][1];
bColor[2] = color[i][2];
}
こんなんでどうにでも成る
回転に関しては、ちょっと何やってんのか分かんない
18デフォルトの名無しさん:2009/07/15(水) 12:43:45
>>16
移動回転するなら行列演算のが簡単で、元ソースみたいな頂点を自力で変更する方法はあまり良いとは言えないんじゃないかな
もちろん調べてるだけってならかまわんけど。
glRotate*やglTranslate*で移動回転して、ワールド欲しければMODELVIEW等をgetすればいいし。
接地が一番下向いてる面ってことなら法線とY軸との内積が最小(-1)ってやるのがてっとり早いような
19デフォルトの名無しさん:2009/07/15(水) 21:35:44
glewを使ってマルチサンプリングでアンチエリアシングをしようとしているのですが、
うまくいきません。それで一つ質問があるのですが、以下の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に対して一度しか呼べない」という意味でしょうか?
20デフォルトの名無しさん:2009/07/16(木) 15:25:23
>>19
どのみちそのサンプルでは同じDCに二度SetPixelFormatしてるね。
wglがらみの問題はOSで挙動が異なることが多々あるから動くならいいやというスタンスしかない気もする。

今回の件は、最初のコンテキスト生成のためにダミーのウィンドウとDCを臨時で作って、
用が済んだらすぐ削除してはどうだろうか
21デフォルトの名無しさん:2009/07/16(木) 20:49:55
glPolygonOffset( factor, units ) でポリゴンのスクリーン Z 座標にオフセットを
加えることができますが、OpenGL の仕様書には
オフセット値 = m * factor + r * units
と書かれています。

このときの r は implementation-dependent constant と書いていますが、この値を
取得したり計算する方法はあるでしょうか?
2219:2009/07/16(木) 21:25:41
>>20
どうも。ダミーのウィンドウを作る線でやってみようと思います。

話しは変わるけれど、テンプレの>>4のFTGLは日本語(ワイド文字)使えるよね。

23デフォルトの名無しさん:2009/07/16(木) 22:36:03
>>22
FTGLはワイド文字で日本語いけますね。速いし簡単だしでとても便利。
ただ、フォントファイルに MSGOTHIC.TTC みたいなフォントコレクションを指定すると、
face indexが指定できないせいで等幅かプロポーショナルかとか選択できなくて困るんですよね。
指定できるようにするのなんて簡単だと思うんですが、なんでそうなってないんでしょう・・・。
(もし指定する方法あったら教えてください)
24デフォルトの名無しさん:2009/07/17(金) 19:53:54
>>23
うーん、FTGLはよく使うけど等幅の選択みたいなことはしたことないというか
そういう関数は見あたらないなぁ。
25デフォルトの名無しさん:2009/07/18(土) 08:20:51
opengl 初心者ですが、
visual studio で作成したGUIからの入力でopengl での描画を更新したいんですが
可能でしょうか?


26デフォルトの名無しさん:2009/07/18(土) 11:08:06
可能です。
27デフォルトの名無しさん:2009/07/18(土) 11:42:01
どうやって?
28デフォルトの名無しさん:2009/07/18(土) 11:43:30
openGLプログラムと、GUIプログラムのプロセス間通信で
やったけど、できれば一つのプログラムで行いたいのですが。
29デフォルトの名無しさん:2009/07/18(土) 11:50:23
Windowsのプロセスって、自分と通信できないんだっけ?
30デフォルトの名無しさん:2009/07/18(土) 12:34:12
>>28
スマンが質問の意味が判らない。
OpenGLプログラムって何のことを指してる?

GUIアプリでOpenGLを使うだけだと思うのだが。
31デフォルトの名無しさん:2009/07/18(土) 12:52:20
わからない人はだまっててください。
32デフォルトの名無しさん:2009/07/18(土) 13:08:45
そして
実際にコンパイルできるソースを書いてくれませんか?
だな
33デフォルトの名無しさん:2009/07/18(土) 13:35:31
>>30
GUIアプリのプロセス内でGLコンテキストを持つウィンドウを作るのが常套手段だよなあ。
34デフォルトの名無しさん:2009/07/18(土) 14:19:21
GLUTとか使ってると面倒かもね。
35デフォルトの名無しさん:2009/07/18(土) 15:20:09
またいつものキチガイだろ。スルーしろよ。
3625:2009/07/18(土) 18:54:03
ここまで物議をかもすとは思わなかった。
CGの形を変える変数をGUIで打ったら、
それに応じて表示を変えるということをしたいのです。
glutMainLoop();に入ると、マウスやキーボードからの入力は受け付けるけど
GUIからの入力をどうやって反映させるのか?と思いまして。
VisualStudio2008 expressでGUIを作り、CGの形を決める変数と紐付けられたリストボックスの項目を選択すると
下の関数に入るという風にしました。
private: System::Void listData_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) {

とりあえずプロセス間通信で変数をOpenGLのプログラムに送り
glutDisplayFunc(display);のコールバック関数 displayで受け取り
CGの形を変えるようにしました。

これで問題ないけど、できればプロセス間通信無しで行いたいと思うのですが。


37デフォルトの名無しさん:2009/07/18(土) 19:01:55
>>36
GLUT使わずに自前でコンテキスト作成すればいいじゃない
38デフォルトの名無しさん:2009/07/18(土) 19:16:54
>>36
なんでプロセス間通信とか、わざわざ面倒臭い道を選ぶんだよwwww
と言いたいところだけど、自前でGLのコンテキスト作るのも慣れないと面倒だからねぇ。

えーと、そのGUIのプログラムとやらに、GL用のウィンドウを追加するのが早いと思うよ。
ただ、GLUTを使わないでやることになるので色々と追加でお勉強が必要になる。
まずはGUIプログラムとは別に、Win32API(&wgl)で簡単なOpenGL表示テストアプリを
作ってみることをオススメする。それをGUIプログラムに持っていけばいいかなと。
「OpenGL win32api」とかでぐぐれかす。
39デフォルトの名無しさん:2009/07/18(土) 19:27:28
GLUTつかうとこういう罠があるからねぇ。
かといって、コンテキスト云々もWinでOpenGLが目的じゃないんなら余計な手間だし、
GLUTに依存してるコード書き直すのも面倒だと思うんで今のままでいいんじゃないかな。
40デフォルトの名無しさん:2009/07/18(土) 19:27:53
>>36
なんでもいいならAntTweakBarが楽だよ
41デフォルトの名無しさん:2009/07/18(土) 20:07:34
GLUTをVisual Studio 2003 でやっているんだけど
オートコンプリート等のインテリセンスが機能しないから
効率が悪いんです
2008 Expressだとオートコンプリート機能はつきますか?
もしくはオートコンプリート機能を追加する方法はありますか?
質問がひどければ謝ります
42デフォルトの名無しさん:2009/07/18(土) 20:21:58
VS2003でも2008でもインテリセンス動くでしょ?
ただ、2003も2008もたまに機嫌を損ねるのか、インテリセンス動かなくなるけど。

あれ全然分かんないんだよなー。なんで動かなくなるのか、
動かなくなったらどうすれば回復するのか・・・。
4336:2009/07/18(土) 20:27:13
アドバイスありがとうございました。
そうですか。GLUTから変えるしかないということで。
今のプログラムはとりあえずこのままで使っていって、
別のopengl プログラム作るときにはコンテキスト作成するようにします。
AntTweakBarも楽に出来るなら見てみます。

44デフォルトの名無しさん:2009/07/18(土) 20:28:33
>>25
GLUTを使わないで自分でGLコンテキストを作る、
openGLに対応したGUIを使う(MUIからQtまでいろいろ)
ダイアログボックスにしてopenGLとは分離してしまう
とかかな

>>40
前スレで知ってちょっと見ただけだけど、AntTweakBarはGLUTと相性悪くね。
openGLのモデル描画を変更があったときだけ再描画したいときとか困るし
45デフォルトの名無しさん:2009/07/19(日) 14:08:14
>>36
あれ、よく見たら、もしかして.NetっていうかC++/CLI(C#と混合?)でやってんの?
だからプロセス間通信なのか・・・。
だとしたら、win32apiとか使えないかも。C++/CLIは使ったことないけど。

.Netの事は良く知らないけど、OpenGLを描画するためのコンポーネントとか無い?
まずはそれを検索してみると良いのでは。

あるいは、GLUT使ってるんならCかC++は使えるんだろうから、
C++/CLIを使うのはやめてC++でGUIも書くとか。
wxWidgets+wxFormBuilderとか、Qt(GPL版)とか使えば、GUIの作成も手っ取り早いよ。
まぁもっとも、手っ取り早いのは慣れた人だけで、wxもQtもそれなりの勉強時間は必要だけど。
46デフォルトの名無しさん:2009/07/19(日) 14:13:05
わからない人はだまっててください。
47デフォルトの名無しさん:2009/07/19(日) 14:17:53
>>45
「.net openGL」でググっただけでいかようにもなりそうだが。
日本語でも英語でも。
48デフォルトの名無しさん:2009/07/19(日) 14:20:48
>>47
おおう。ホントだ! しかも何コレ簡単だし楽そうだなぁ。
今度小さなテストアプリ書くときは.Netでやってみるか〜。

>>46
w
49デフォルトの名無しさん:2009/07/22(水) 23:11:28
質問です。
初期処理にて
glEnable(GL_DEPTH_TEST);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

とやり、描画ループのバッファクリアのタイミングで
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
としているのですが、ポリゴンが面の片側にしか描画されません。
こういった場合にまず疑う or 検証すべき箇所はどこでしょうか。

他にオプション関係で初期処理中に行っている事といえば、
glEnable(GL_POINT_SMOOTH);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
あと、頂点の並びが個人的にイメージしやすいので
glFrontFace(GL_CW);
としています。よろしくお願いします。
50デフォルトの名無しさん:2009/07/22(水) 23:22:53
GL_CULL_FACEの意味をちゃんと調べたほうがいい
51デフォルトの名無しさん:2009/07/22(水) 23:22:55
カリングやってるからじゃね?
5249:2009/07/22(水) 23:59:57
>>50,51
ありがとうございます。
そこは確かに怪しいのですが、カリングOFFでも状況変わらずでした。
たとえば、辺の長さ1の立方体を、Z軸の真ん中で分断するような面↓を作り、
GLfloat vert[] = {
 0.0f, 0.0f, 0.5f,
 0.0f, 1.0f, 0.5f,
 1.0f, 1.0f, 0.5f,
 1.0f, 0.0f, 0.5f
};
GLfloat texPoints[] = {
 0.0f, 0.0f,
 0.0f, 1.0f,
 1.0f, 1.0f,
 1.0f, 0.0f
};
glBindTexture(GL_TEXTURE_2D, someTexID);
glTexCoordPointer(2, GL_FLOAT, 0, texPoints);
glVertexPointer(3, GL_FLOAT, 0, vert);
glDrawArrays(GL_QUADS, 0, 4);

とでもしてみて、立方体から北側となる{0.5f, 0.5f, -2.0f}辺りの視点
から上記のvert面を確認します。すると立方体の南面、東面、西面を裏側から
観る事になるのですが、この時、南面と東面の裏側にだけ、意図しない
黒いポリゴンが表示されるのです。分断面そのものは期待通りに描画されます。

どなたか似たような経験をされた方がおられれば、と思って質問しました。
5349:2009/07/23(木) 00:11:48
すみません、話が飛躍してしまったので追記といいますか、補正です。

そもそも最初にこちらで質問したかったのは、
「画面内に意図しない黒いポリゴン面が描画される原因」でした。

それで、よく見てみると、その変な黒いポリゴン面が描画されるのは
「透明部分を含むテクスチャ」を使用している面(の背後)でした。
テクスチャ画像の透明部分から、当然、向こう側が透けて見えるわけですが、
その向こう側には別のテクスチャの裏面が描画されているわけです。

そこで、その遠いテクスチャの裏返しが描画されているのなら納得できるのですが、
見えているのは真っ黒なポリゴン面でした。それで>>49のような質問を
させて頂きました。

>>52で書いたのは、そういった話をすっ飛ばして、
透明テクスチャの周囲で描画がおかしくなる、という現象の説明でした。
説明が飛び過ぎてよくわからないですね。すみません。
54デフォルトの名無しさん:2009/07/23(木) 06:00:21
透けるの透けないの、黒いの白いの東西南北、さっぱりわからん
ゴチャゴチャ言ってないで、うまくいかないシンプルなプログラムを丸ごとどっかにupしろ
つか、課題なら授業中に講師に聞け
55デフォルトの名無しさん:2009/07/23(木) 08:30:12
ただの描画順の話でないの?
透明とか半透明を含むポリゴンは奥から手前の順番になるように描かないとだめだよ
56デフォルトの名無しさん:2009/07/23(木) 08:48:28
光が当たらないと真っ黒になるよね
5749:2009/07/23(木) 09:12:53
皆さんありがとうございます。

>>54
結構巨大なソースになりつつあるので、全体をアップするとは考えても見ませんでした。ちょっと時間を用意して、できる事なら該当箇所を切り出して見ます。本当にもう、課題だったら先生に聞けて楽なのですが……。ありがとうございました。

>>55,56
そのあたり、あまりきちんと理解せずに組んでいるかもしれません。特に透明が絡んだ時の描画順については全く意識していなかったので、調べて見ます。ありがとうございました。
58デフォルトの名無しさん:2009/07/23(木) 18:31:23
前スレで外部モジュールのnvoglnt.dllでエラーが発生する件で質問をしていた者です。
問題が解決したので、ご連絡します。

===状況===
GLUTを用いてマルチウィンドウを実装したソフトを動かしていると、不定期なタイミングでnvoglnt.dllでエラーが発生する。
問題のモジュールが呼ばれる順序が
kernel32->glut32->opengl32->nvoglnt
となっていた為、問題箇所を特定することが出来ず、デバッガーで追うことが出来ない(追う方法を知らない)
===問題点===
複数のウィンドウを連動させる為に、
 「dispAの描画が発生したらdispBの描画も行う」
という処理を実装する際に以下のようなコーディングを行っていました。
5958: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();をコールすることで描画タイミングをハードウェアに任せるように記述することで問題が解決しました。
6058:2009/07/23(木) 18:33:24
何かのデータ処理を行う関数(){
/* データ処理を記述 */
/* dispAの描画を実行 */
glutSetWindow( dispA );
glutPostRedisplay();
}

dispA(){
/* dispAの描画処理を記述 */
・・・
glutSwapBuffers();

/* dispBの描画を実行 */
glutSetWindow( dispB );
glutPostRedisplay();
}

dispB(){
/* dispBの描画処理を記述 */
・・・
glutSwapBuffers();
}

前スレが見えなくなってしまったので、アドバイスを頂いた方の番号が分からないのですが、本当にありがとうございました。
61デフォルトの名無しさん:2009/07/24(金) 19:31:37
glutについて質問したいのですが、あまりにもレベルの低い
内容なので、ここで質問して良いものか迷っています。
glutに関して初心者が集うようなスレッドはありますか。
あれば紹介して欲しいです。なければここで質問させてほしいです。
62デフォルトの名無しさん:2009/07/24(金) 19:35:48
ここでどうぞ
63デフォルトの名無しさん:2009/07/24(金) 21:59:33
>>62
早いお返事ありがとうございます!

どの程度説明すれば伝わるか分からないのですが、とりあえず…
1.x,z軸に沿った平面を作りまして
2.その平面の上から平面に向かって垂直にスポットライトを当てまして
3.平面の光が当たっている部分が丸く明るくなっているのを確認しまして
平面は拡散反射にしているのに、何故かカメラを上に平行移動させると
丸く明るくなっているところが手前にずれてきて楕円になってしまうのです。
イメージ的にはカメラが上に上がるにつれてライトがこちらを向いてきている
ような…
因みに、カメラはライトの真上ではなくて斜めから向けてます。

長々と分かりづらい文章ですみません。
必要でしたらソースコードとか動画とか載せますんでお願いします。
私としては平面図形とライトが何故か別々の動きをしていて
それを何とかできれば…と思っているところです。
64デフォルトの名無しさん:2009/07/24(金) 22:08:50
どう考えても必要だからまずソースうpれよ
6561:2009/07/24(金) 22:22:50
>>64
それもそうですね。
見づらいでしょうが、よろしくお願いします。

#include <GL/glut.h>
GLdouble vertex[][3] = {
{ -0.5, 0.0, -0.5 },
{ -0.5, 0.0, 0.5 },
{ 0.5, 0.0, 0.5 },
{ 0.5, 0.0, -0.5 },
};
int face[4] = { 0, 1, 2, 3};
GLdouble normal[] = { 0.0, 1.0, 0.0 };
GLfloat light0pos[] = { -1.0, 5.0, 0.0, 1.0 };
GLfloat spotDir[] = { 0, -1, 0 };
GLfloat lightred[] = { 1.0, 0.3, 0.3, 1.0 };
GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 };
int flag_right = 0;
int flag_left = 0;

void display(void)
{
int i,j,k;
static double d = 0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();
/* 視点位置と視線方向 */
gluLookAt(0.0, 6.0+d*d, 50.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

6661:2009/07/24(金) 22:25:18
/* 光源の位置設定 */
glLightfv(GL_LIGHT0, GL_POSITION, light0pos);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, white);
/* 土台の描画 */
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, white);
for( i=0; i<40; i++){
for( j=0; j<40; j++ ){
glPushMatrix();
glTranslated( i-20, 0, j-20);
/* 1*1の平面 */
glBegin(GL_QUADS);
glNormal3dv(normal);
for (k = 0; k < 4; k++) {
glVertex3dv(vertex[face[k]]);
}
glEnd();
glPopMatrix();
}
}

glutSwapBuffers();
if ( flag_right ) d = d + 0.05;
if ( flag_left ) d = d - 0.05;
if ( d < 0 ) d = 0;
}

とりあえず入りきらなかったので初期化関係その他は省きました。
全部必要だったりします?
67デフォルトの名無しさん:2009/07/24(金) 23:51:11
>>65
起動させてみたけど、ただ単にカメラを上げるにつれ、ライトとカメラのなす角度が小さくなってゆく訳で、
特に異常はないけど?

> 前にずれてきて楕円になってしまう
むしろ楕円だったのが真円に近くなってくるだろ、d増加につれ
68デフォルトの名無しさん:2009/07/24(金) 23:55:11
どこでスポットライト?
ソースチラ見でわかんなかったから、ちょっとコード足したら普通に点光源で動いたが
ソース出すなら、めんどくさいから全部出したほうがいいんじゃね
PROJECTIONによっては楕円に見えるかもしんないし
6961:2009/07/25(土) 03:31:13
>>67-68
ありがとうございます。
正常に動いてますか…
いよいよどこか勘違いしてる気がしてきました。。
以下、残りです。
void resize(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30.0, (double)w / (double)h, 1.0, 500.0);
glMatrixMode(GL_MODELVIEW);
}

void init(void)
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CCW);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightred);
glLightfv(GL_LIGHT0, GL_AMBIENT, lightred);
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 30);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spotDir);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.01);
}
7061:2009/07/25(土) 03:34:16
void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN) {
flag_left = 1;
glutIdleFunc(idle);
}
else {
flag_left = 0;
glutIdleFunc(0);
}
break;
case GLUT_RIGHT_BUTTON:
if (state == GLUT_DOWN) {
flag_right = 1;
glutIdleFunc(idle);
}
else {
flag_right = 0;
glutIdleFunc(0);
}
break;
default:
break;
}
}
7161:2009/07/25(土) 03:35:02

int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutMouseFunc(mouse);
init();
glutMainLoop();
return 0;
}

手間をかけさせるような真似をしてすみません。
72デフォルトの名無しさん:2009/07/25(土) 03:57:53
スクショみせてみ、何に不満なのか
73デフォルトの名無しさん:2009/07/25(土) 04:03:18
やっぱライトの設定があったか
init()の中のGL_SPOT_DIRECTIONをdisplayのGL_POSITIONと同じ場所で
ライトの設定はgluLookAtの後でやらないとビュー座標になる
7461:2009/07/25(土) 20:59:41
>>73
おお、直りましたありがとうございます!
座標、ベクトル関係は変換行列だとかの
影響を受けるということなのかな…。。

>>72
もう解決してしまいましたが、一応。
http://www1.axfc.net/uploader/Sc/so/20994.jpg

OpenGLスレのみなさん、お騒がせしてすみませんでした。
75デフォルトの名無しさん:2009/07/25(土) 22:01:51
【科学】道路に軍手が落ちているワケ、名城大研究チームが突き止める[09/07/24]

http://namidame.2ch.net/test/read.cgi/hidari/1225537555/
76デフォルトの名無しさん:2009/07/28(火) 19:07:26
ちょい質問

メインスレッドで描画してたプログラムの描画命令部分をスレッド化しようとしてる
それで描画命令部分をそっくりそのままスレッド化したら、

プログラム起動 -> 描画スレッド呼出(1回目) -> スレッド破棄 -> スレッド呼出(2回目) …

この呼出2回目以降描画されなくて困ってるんだけど、原因に心当たりないかな?
HDC、HRCの設定と破棄は描画スレッドでやってる
1回目は何の問題もなく描画されてるから、原因がさっぱりわからなくて困ってる・・・
77デフォルトの名無しさん:2009/07/28(火) 19:21:11
>>76
まずはソース出せよ
78デフォルトの名無しさん:2009/07/28(火) 19:57:52
エラーチェックしろよ
79デフォルトの名無しさん:2009/07/29(水) 12:30:43
Google 3D ギャラリーの3DモデルをOpenGLで読み込みたいんですが参考になるページありませんか?
80デフォルトの名無しさん:2009/07/29(水) 13:26:15

なんか藻前等凄いなw

OpenGLって文書があんま充実してないのに、よく生き残ってるよな。
以前はもっと使いやすいHOOPSとかいう3Dグラフィクスライブラリなんか
あったんだよ(すげー使いやすいかた)。

ほんと、このスレで得意げになってGLのコードすらすら書いてるヤシって
ただもんぢゃねー
81デフォルトの名無しさん:2009/07/29(水) 15:31:49
HOOPSっておいおい……
82デフォルトの名無しさん:2009/07/29(水) 18:30:17
LinuxやFreeBSDだとOpenGLしかないからな。
DirectXがあったところできもいので使わないけど。
ただOpenGLやDirectXにかわるスマートで見通しのいいAPIがあっても良いと思う今日この頃。
83デフォルトの名無しさん:2009/07/29(水) 19:03:47
DirectX あの命名規則はなんとかならんの?
84デフォルトの名無しさん:2009/07/29(水) 19:19:11
OpenGLやDirectXにかわる・・・幻と消えたFahrenheit・・・
どんなAPIになる予定だったのだろう
85m9('v`)ノ ◆6AkAkDHteU :2009/07/29(水) 20:30:52

>>81-84

レスどうもです。
思うのはね、もうちっとMayaなんかとの連携がスムーズになっていても
よかったんじゃないかなぁ・・・って。

だって、モデリングして、それ取り込んで、それからコードづらづら
書くなんてさ、15年前のGLと大差無いんですもん。

Unityとかoolong(だっけ?)なんていう技術が生まれてはいるんだけど、
なんか使い肉そぉ。

EclipseとかVisual Studioとかの統合開発環境が
これだけ発達したんだから、もちっとOpenGL自体も他の技術との親和性を
高めて欲しい。PS3とかで3Dゲームばりばり作ってる人には、SCEが
フレームワーク準備してあげてるんでしょ?

そういうフレームワークがOpenGL自体に欲しいのよね。ホントこの状態で
ばりばりOpenGLのコード書く連中って神がかってるwお世辞ぢゃなくて。
86デフォルトの名無しさん:2009/07/29(水) 20:37:52
フレームワークなんて探せばゴロゴロ出てくる。
個人の趣味レベルのものから商業レベルのものまでな。
使いこなせるかどうかは別として。
87デフォルトの名無しさん:2009/07/29(水) 20:46:57
gltexsubimage2Dを使ってテクスチャの書き換えをして
オブジェクトに落書きみたいなことをしたいんだけど
この場合透明な色に書き換えることってできる?
88デフォルトの名無しさん:2009/07/29(水) 20:47:47
よけいなことをしないのがopenGLのいいところ
だからこそ、それぞれの分野で足りないところは自分で補えるし、使いやすい。

つか、得意げになってとか神がかってるwとか、お世辞ぢゃなくてバカにしてんだろ?w
89デフォルトの名無しさん:2009/07/30(木) 00:49:48
>>85
そりゃOpenGLはグラフィックス用のアセンブリ言語と呼ばれる位だから。
高レベルなことをしたいならそれなりのフレームワークを使えばいい。
有名どころではOpenSceneGraphとかOGREとか。他にも沢山ある。
90デフォルトの名無しさん:2009/07/30(木) 01:01:52
>>87
ごめんなさい。質問読み返したらわけが分からなかったので再質問

テクスチャ貼ってる正方形のオブジェクトに真っ白のテクスチャを貼っている状態(この状態だと見た目は白の正方形)のものがある
ここで貼っているテクスチャをglTexSubImage2Dを用いて一部を塗り替える
塗り替えた部分を透明(オブジェクトの背景まで透ける)にするためにはどうしたらいいですか?
91デフォルトの名無しさん:2009/07/30(木) 01:10:38
なんでアルファ使わないの?
92デフォルトの名無しさん:2009/07/30(木) 02:00:06
>>91
アルファ値を設定しても反映されないんです
オブジェクトの色とか設定するときには反映されるんですが
gltexsubimageで大きさ1*1にして1ピクセル分の要素(RGBA)を設定してるんですがRGBしか反映されません
どんな原因があるでしょうか?
93デフォルトの名無しさん:2009/07/30(木) 02:23:51
コードが間違っているんだろ
94デフォルトの名無しさん:2009/07/30(木) 03:06:04
そもそもblendがらみの設定をしてない・おかしいとか、
texの大きさを2^nにあわせるのに失敗しているとか、
1ピクセル分の要素の元のメモリ側の配列と、glでテクスチャイメージとして送る際の設定が噛み合ってないとか

いろいろありそう
95デフォルトの名無しさん:2009/07/30(木) 03:16:05
質問者は再現コードを提示すべき。
言ってることとやってることが違うのは良くあることだから。
96デフォルトの名無しさん:2009/07/30(木) 10:22:37
アルファ付きのテクスチャフォーマットを指定してないとか
97m9('v`)ノ ◆6AkAkDHteU :2009/07/31(金) 05:16:34

>>89

   「ここがダメだよ、OpenGL >>85 補足」

いや、ほら、OpenGL と Open GL ESじゃはっきり言って別物だしさ、
だって、openシーングラフなんてOpenGL ESじゃ使えねーし。

なんか背後の設計思想が未熟だよ。俺だったら、もっと抽象度高めて
ESだろうが、バージョンが変わろうが、もっと透過度っつーのかな、
ともかく上手につくるね。

GLがポータビリティ高いなんて、大嘘だよ、絶対騙されるなよ。

もうJavaもObjCも、OpenGLと連携できますじゃなくて、自前のAPI設計
しろよ。やっぱできねーんじゃねーのかなw
98デフォルトの名無しさん:2009/07/31(金) 05:25:41
>>97
> 自前のAPI設計

AGLのことか?
99デフォルトの名無しさん:2009/07/31(金) 08:53:29
>>97
当然それぞれの仕様書は読んでるんだろうけど、気に入らないのはどの部分?
設計思想ってことは冒頭かな?
具体的におかしいとこ挙げてどう変わるべきか
書かなけりゃアンチが騒いでるだけにしか見えないよ
100デフォルトの名無しさん:2009/07/31(金) 09:17:26
「6AkAkDHteU」で検索すると面白いよ!
101デフォルトの名無しさん:2009/07/31(金) 11:21:11
>>97
ううん・・・一言で言っちゃえば、
 6AkAkDHteUさんにとって必要なのはOpenGLではない
ってだけの話のような。
抽象度の高い、透過的なライブラリなら他にあるでしょ多分。知らんけど。

ちなみに自前のシーグラフライブラリは、ちょっと手直ししたらESでも
いい感じに動いたよ。全然複雑な事やってないから、てのもあるけど。
winからiPhoneにそのまま持っていけて、便利便利。

でもって今はGL2.1/ES2.0で動くシーングラフライブラリを一から組み直し中。
シェーダ中心になると、高レベルレイヤの組み方からして変わってくるから
GL1.x/ES1.xまで透過的に扱えるよう設計するのは、僕には難しかった・・・。
無理すればやれないことはないんだろうけど、手間の割に益無さそうだし。
102デフォルトの名無しさん:2009/07/31(金) 11:50:54
要するに、OpenGLが何のために定められている仕様なのか、理解できてないってことだな
103m9('v`)ノ ◆6AkAkDHteU :2009/07/31(金) 12:09:35

>>101

断言しる、藻前の技術力、相当なもんだ。

>>100>>102については、もう「はぁ」って感じぃ〜
プログラミングのパラダイムって変わったんだよ。簡単に言うと、
EmacsからEclipseへってことだ。

とにもかくにも、OpenGLのバージョン間での透過性だけじゃなくて、
他のツールとの透過性も意識しなきゃもう時代遅れよ。GLには
フレームワーク化の努力が決定的に欠けていた。

扱うためには、>>101みたいな技術力持ってなきゃいかんっつぅのは
もうAPIとして失格。

一言で言うと、3Dっていう概念を狭く取りすぎてるんだ。
もっと視野を広げて、シェーディング、モデリングを他のツールと
上手に連携しながら行う一つの環境っつぅか、パッケージの構築に
注力しなきゃいかん。

>>101はどうよ? おまえ、凄いけど、もちっと遠くを見てOpenGL批判できる
ぐらいでなきゃだめよ。つーか、お前ぐらいの技術力あるヤシにこそ、
そういう思想を身につけてもらいたい。

以上だ(一応、京大院卒)。
104デフォルトの名無しさん:2009/07/31(金) 12:14:25
「6AkAkDHteU」で検索すると面白いよ!
105デフォルトの名無しさん:2009/07/31(金) 12:19:09
フレームワークってのは枠にはまってるうちはいいが、
枠から外れることをする必要がでると途端に難しくなる
フレームワークはフレームワークでいくらでも存在してていいが、
OpenGLのようなハードウェアと直接対話するローレベルなAPIも選択肢としては欲しい
106デフォルトの名無しさん:2009/07/31(金) 12:52:22
おまえら釣られすぎだろ
キチガイに構うなよ
107デフォルトの名無しさん:2009/07/31(金) 14:00:31
てかシーングラフと3DCG関数群って
全然レイヤの違う話じゃないか。
何いってんだが。
108デフォルトの名無しさん:2009/07/31(金) 14:11:10
病院行きだな。 俺もスルーしよっと。
109デフォルトの名無しさん:2009/07/31(金) 14:28:58
夏だねっ!
110m9('v`)ノ ◆6AkAkDHteU :2009/07/31(金) 18:32:51

>>107
スレ違いかもしらんが・・・・行くよ、サンロクマルで・・・

まじ倒すよ、プレステを。
111デフォルトの名無しさん:2009/07/31(金) 22:18:38
>>103
ぜひそのフレームワーク実装してくれ。
OpenGLもDirectXも使わずになw
112デフォルトの名無しさん:2009/08/01(土) 00:48:18
OpenGLを批判できる俺かっこいいまで読んだ
113m9('v`)ノ ◆6AkAkDHteU :2009/08/01(土) 07:38:47
>>111
DirecXなんてさらに閉じた環境だな。オープン系なんて呼ぶなよ、ヴォケ。

まぁ、OpenGLの設計思想は完全な失敗だったね。

モデラーとの連携性悪すぎ、「動的スクリプティングの拡張」も無し、
OpenGL ESとのシームレスな継続性も酷いもんだ。

でもな、日本からこういった技術って生まれないよな。

>>105の言うハードウェアとの「直接対話」って、結構見落とせない部分で、
その点ぢゃOpenGLの功績は評価できるレベルだと思う。でも90年初期から
進化がなかったよ。

ちょっとさ、俺の言うことに反論できないんぢゃ、どの情報工学科からも
ドクターなんて絶対取得できないぜ。>ALL
114デフォルトの名無しさん:2009/08/01(土) 07:43:27
OpenGLのポリゴンの上で動画(AVIとか)を再生したいのですが可能でしょうか。
参考になるコードありませんか。
115デフォルトの名無しさん:2009/08/01(土) 07:59:11
>>113
>>1を読め。禁止事項全てに該当するのでお前は出入り禁止だ。
116デフォルトの名無しさん:2009/08/01(土) 08:01:32
>>114
普通に出来る。
mplayerなどはOpenGLバックエンドがあるからそのコードでも参考に。
117デフォルトの名無しさん:2009/08/01(土) 08:03:20
>>113
結局、技術力&理解が無い上っ面だけの理屈ヤローじゃんw

>モデラーとの連携性悪すぎ、「動的スクリプティングの拡張」も無し、

あのなOpenGLは低レベル描画APIで有って、
そんなのを求めてる時点で技術の無いクレクレ房なだけじゃん

どっかのミドルウェアで、モデラーと連携して動的スクリプティングの拡張してあって
GLとDXの切り替え付いてれば、GL選択して使えよw


>OpenGL ESとのシームレスな継続性も酷いもんだ。

ESってのは組み込み向けなんだよ、前提としてるハードが全然違うの
ネーミングの文句言うならともかく、お前はES、ESと言いたいだけだろw
って感じ

OpenGLとOpenGL ESを同列に扱おうとしてる時点で
C++とアセンブラを同じ目線で語って文句言ってるようなもんだ
”アセンブラは酷いもんだ、クラスとか無いし”ってな感じww
118デフォルトの名無しさん:2009/08/01(土) 08:20:39
相手すんなよ
119デフォルトの名無しさん:2009/08/01(土) 10:05:42
>>116
トン
NeHeも探してたんですがLesson35にもありました。
そのサンプルも見てみます。
120デフォルトの名無しさん:2009/08/01(土) 12:08:36
>>113
設計思想を理解できてないくせに設計思想を語るのやめようぜwww

まず、仕様書を第一章から5分でいいから読んでみろ。
普通の英語力なら今お前が理解できていない内容について
すべてを物語っている一言に到達できるだろう。

お前が言っているのはお米をつくっている農家に対して
「これからはおにぎりだ、海苔がないなんて考えられない、
 お米なんてつくったってダメじゃん、アハハ〜」
といっているのと同じことだってことだ。

理解できたら自分のバカさ加減を認識してとっとと去ね。
理解できなかったら自分の理解力のなさを認識してとっとと去ね。

さて、これで俺もあらし認定決定だし、消え去るといたしますかなw
121デフォルトの名無しさん:2009/08/01(土) 12:31:49
>>113
OpenGLってのは3Dソフトウェアから見れば最下層のAPIで、
3Dじゃないソフトウェアで言うなら、BIOSみたいなもんだよ。
APIやプログラミングモデル自体に不満(ステート変更が頻雑になるとか
バッファの扱いが面倒だとかシェーダの直行性が保てないだとか)があるなら
ともかく、そんな高レベルの話はOpenGLの範疇外だよ。
BIOSに対して「スクリプトで拡張できない!」とか言い出すヒトはいないでしょ。
(あ、でもBIOSがスクリプトで拡張できたら面白いナ・・・)

あと、ESとの継続性(?)って、具体的に何が不満なのかな。
全く同じソースコードが動くようにするなら、わざわざESなんて作る必要性が
無いわけで(笑)ある程度書き換えないといけないのは当たり前かと。
それよりも、API名やプログラミングモデルが共通なので今までのノウハウが
そのまま使えるというのが重要なんだと思いますが。

>>117
OpenGLとOpenGL ESの違いを、C++とアセンブラの違いに例えるのは
いかがなものかと・・・。
122デフォルトの名無しさん:2009/08/01(土) 12:46:00
>>121
> (あ、でもBIOSがスクリプトで拡張できたら面白いナ・・・)
っ Extensible Firmware Interface

> API名やプログラミングモデルが共通なので
1.1赤本くらいしか読んでいなかった人は面食らったと思う。俺とか。
まあすぐに適応したけどラッパー類の構造はかなり書き直しが必要だったな。
OpenGLがC++だとしたらESは生Cくらいの印象かなあ。
123デフォルトの名無しさん:2009/08/01(土) 13:37:30
>>122
EFIは、スクリプティングとはちと違うような。
スレ違いになるけどEFIって現状どうなってるんだろ。普及してんのかなw

ラッパの書き直しのとき、ESでは使えない機能の場合は置いておいて、
例えばglDrawElementsでインデクスのtypeにGL_UNSIGNED_INTが使えない
みたいな制限があった場合、どうしました?
1.ラッパのAPIを、GL_UNSIGNED_SHORTまでに制限する
2.ラッパの内部でintのインデクスをshortに作り直す
僕はもう面倒臭いんで1.を採用することが多いんですがw
124デフォルトの名無しさん:2009/08/01(土) 15:04:19
>>123
俺はmacも使うからEFI搭載マシンを使っていることになるな。
かといっていじれないから恩恵は受けていないのだがw

2にすると一つだけ問題があって、PSPとかiPhoneみたいなハード側の制限が厳しい環境だと、
最適化が甘いと露骨にパフォーマンスを悪化させるという点ですかね。実際2をやるんだけどさ。
多分最適な方法はラッパ側でtypedefしちゃって対象ごとに切り替えちゃうことなんだけど、
Cは精度が落ちる暗黙の変換が緩いので想定外のバグを生む可能性は知っていないとならない。
125m9('v`)ノ ◆6AkAkDHteU :2009/08/01(土) 19:41:09

>>117

先ず日本語ちゃんと使えるようにしような。その語学力じゃOpenGLは
ちとキツイだろ?

つぅか、おま、OpenGLの思想どころかエンジニアリングって何なのか
理解できてねぇつーか、理解不能なんだな。オタク工学部出身だと
したら5流大出だろ(俺、いちお京大院修了済み)。

俺はOpenGLがGLだった頃から知ってんだ。
言語は言語にとどまっちゃいかんのよ、その先へ行かなきゃ。Javaは
それで失敗したけどな。

OpenGLにはフレームワークっていぅ概念さえないぢゃん。だめだよ、
この程度ぢゃ・・・・はっきりいって駄作だ。
126デフォルトの名無しさん:2009/08/01(土) 20:10:12
もう触れるなよ、約束だ
127デフォルトの名無しさん:2009/08/01(土) 20:30:43
じゃね
128デフォルトの名無しさん:2009/08/01(土) 20:31:57
> OpenGLがGLだった頃

何時だ
129デフォルトの名無しさん:2009/08/01(土) 20:33:38
古参を気取るようなおっさんが「ぢゃ」とか使ってるのは気持ちが悪い。
130デフォルトの名無しさん:2009/08/01(土) 20:34:13
>>452
死ね
131デフォルトの名無しさん:2009/08/01(土) 21:02:39
>>125

おまえ、「フレームワーク」って言葉を最近覚えて気に入っちゃったみたいだけど
言葉の意味ちゃんと理解してる?w
OpenGLはグラフィックハードウェアの機能・構成に対するフレームワークとして
十分その役割を果たしているだろ。

あと、ここのスレの奴らがいろいろ教えてくれてるの、ちゃんと読んでるか?
読んでて>>125のレス出してるなら理解力0のバカ(関西における意味で)だぞ。

もう一つ、GLの頃から知っているって主張するのは、かなり前から知っているけど
なんにも理解できていないんですって主張しているようなもんだから、やめときなw


132デフォルトの名無しさん:2009/08/01(土) 21:30:04
相手する奴も同罪
133デフォルトの名無しさん:2009/08/01(土) 21:31:30
125がバカだとは思うが、openGLはフレームワークではないだろ。
べつにフレームワークが偉いわけでも、そうでないといけないわけでもないし
低レベルなステート操作なAPIだからこそ息が長く汎用性もあるとも言えんじゃね
134デフォルトの名無しさん:2009/08/01(土) 21:42:34
そんだけ長い間この分野に関わっておきながら、いまだ機能の階層構造という
概念の理解に到達しない人間がいるということに驚かされる。
しかもそれでエンジニアリングを語るとか、一体どうなってるんだ。京大パネェ
135デフォルトの名無しさん:2009/08/01(土) 22:00:39
京大修士が2chのスレでこれほど痛い書き込みをするほど余裕が
無いとはにわかに信じがたい話だ
136m9('v`)ノ ◆6AkAkDHteU :2009/08/01(土) 22:02:05
>>134
いや、俺は京大学派に属してても、亜種っつぅかさ、系統図じゃ上のほうに
属してるんだ。

多いよ、APIだからどうのとかいってさ、言語ないしは計算機環境の
設計にまで思い至らない連中がさ。NECや富士通とかの技術者がその程度
なんだよ。

低レベルI/Oの処理とかさ、バカなこと言ってねぇで、もっと視野広げると
楽しいよ。ほんと。ま、無理だろうけど。
137デフォルトの名無しさん:2009/08/01(土) 22:08:06
ここでグチグチ言われても鬱陶しいだけなんだが。
なにが気に食わないのかしらないが、自分で行動を起こせばいいだろ
138デフォルトの名無しさん:2009/08/01(土) 22:13:58
136は134の日本語が理解できないようだ
139デフォルトの名無しさん:2009/08/01(土) 22:33:42
京大院卒→ 京大院修了済み→ 京大学派
140デフォルトの名無しさん:2009/08/01(土) 22:38:06
要は京大に喰い付いて欲しいんだろ。
学があるだのないだのみたいな。
お前ら好きだろそういうの、がんばれよ。
141デフォルトの名無しさん:2009/08/01(土) 22:49:19
じゃあここで東大院CG系研究室の俺が颯爽と
142デフォルトの名無しさん:2009/08/01(土) 23:09:36
じゃあ東工大院でCGとは全く関係無かった俺はひっそりと
143デフォルトの名無しさん:2009/08/01(土) 23:32:58
学歴の話はスレ違い、そろそろ余所でやってくれ
144デフォルトの名無しさん:2009/08/01(土) 23:39:16
145デフォルトの名無しさん:2009/08/01(土) 23:56:04
>>141
ラジオシティ法の命名の件で愚痴る先生の研究室ですねわかります。
146131:2009/08/02(日) 00:02:00
>>133
>openGLはフレームワークではないだろ。
うん、まあね。
「OpenGLのパイプラインの処理モデルをホストのシステムと協力して実現できる
ことがグラフィックハードウェアに課せられている」という意味で書いたんだけど、
これって現実的にはなんの制限にもなってないよねw
そもそもGPUなんてなくたってCPUに処理させちゃっていいってことなんだし。

まあ、バカをバカにしてみたかったバカの発言ってことでお許しくださいw

147デフォルトの名無しさん:2009/08/02(日) 00:13:55
>>136>>129 に指摘されて言葉改めたのか?w
もうちょっと頑張れよwww

てか、お前何話してんの?OpenGLの話しようぜ。
148デフォルトの名無しさん:2009/08/02(日) 00:38:58
>>145
いや、元自分の研究室の学生と結婚しちゃった新進気鋭の若手先生のとこかもw
149デフォルトの名無しさん:2009/08/02(日) 01:19:18
何?>>136って>>134で対象となっている人間が自分だって気付いていないってこと?
スゲェな
150デフォルトの名無しさん:2009/08/02(日) 01:51:46
>>141,145,148
こんなに東大のCG研の人間がいたらそりゃあ馬鹿は袋叩きに遭うわけだwww
151デフォルトの名無しさん:2009/08/02(日) 02:36:17
ここでもう一人東大関係者登場。
東大は駒場の馬鹿のせいで全学2chへの投稿が弾かれているはずだ。
お前らフシアナも出来ないはずですよ! m9('v`)ノ
152デフォルトの名無しさん:2009/08/02(日) 02:42:53
いあ、解除されてる。試しにふしあなしてみろ。
153デフォルトの名無しさん:2009/08/02(日) 05:24:51
珍しく伸びてるから何かと思えば
154デフォルトの名無しさん:2009/08/02(日) 07:02:40
♪Et de l'Étoile à la Concorde, un orchestre à mille cordes
♪Tous les oiseaux du point du jour chantent l'amour

♪Aux Champs-Elysées, aux Champs-Elysées
♪Au soleil, sous la pluie, à midi ou à minuit
♪Il y a tout ce que vous voulez aux Champs-Elysées
155デフォルトの名無しさん:2009/08/02(日) 10:12:15
なにこの街の遊撃手のCM
156デフォルトの名無しさん:2009/08/02(日) 15:27:27
あの見事な車のCMのか
157デフォルトの名無しさん:2009/08/02(日) 22:01:55
glReadPixelsとかglTexImage2Dとかを使う回数はやっぱり抑えたほうがいいの?
158デフォルトの名無しさん:2009/08/03(月) 00:11:33
必要なだけやればいい。
他の方法で代替できるならそうしたほうが良い場合もある
159デフォルトの名無しさん:2009/08/03(月) 00:21:10
>>157
可能な限り抑えた方がいいです
160デフォルトの名無しさん:2009/08/03(月) 01:21:16
glDrawPixelsとテクスチャ付き矩形で比較すると、同時間で描画できるピクセル数が10倍以上違うのが普通。
Vista世代のオンボカードでもglDrawPixelsじゃ1フレームで画面の1/4程度(500x500)の面積しか描けない。
バスが細いネットブック向けだと200x200がせいぜいじゃないかな。
161デフォルトの名無しさん:2009/08/03(月) 01:43:53
glDrawPixelsにはそれを使うのに適した時があるから、テクスチャ矩形と速度比較しても意味無い
てか、オンボカードってなに?
162デフォルトの名無しさん:2009/08/03(月) 01:49:40
オンボカード失礼しました
まあ、基本的にはキャッシュすればいいものはキャッシュするに越したことはないということですわな
163デフォルトの名無しさん:2009/08/03(月) 02:36:57
PBO使えばおk
164デフォルトの名無しさん:2009/08/04(火) 01:35:53
OpenGL 3.2発表されたらしいね。Geometry Shaderも入ったとか。
これでAMDも言い訳できまい。さっさと実装汁。
165デフォルトの名無しさん:2009/08/04(火) 02:15:22
質問です。
マルチテクスチャの機能を使って、4枚のテクスチャを混ぜようとしていますが、
2枚のテクスチャを混ぜることはできたものの、3枚以上を混ぜる方法が分かりません。
ググったりしてみたのですが、見つけたサンプルは2枚のものばかりでした。
どなたか、3枚以上のマルチテクスチャマッピングを教えて下さい。
シングルパスでできれば、さらに嬉しいです。
166デフォルトの名無しさん:2009/08/04(火) 03:12:48
AMDまだGS実装してなかったのかよw
167デフォルトの名無しさん:2009/08/04(火) 03:21:52
>>165
シェーダーで
使わなくてもできるだろうけど、個別の調整とかその後の拡張を考えたら、素直な実装はシェーダーの時代かと
168デフォルトの名無しさん:2009/08/05(水) 01:45:45
>>165
2枚が出来るなら3枚でもできるんじゃね?
glActiveTextureのGL_TEXTURE0とかGL_TEXTURE1とかなってるところを
GL_TEXTURE2とかGL_TEXTURE3に増やして同じことやればいいだけ
ちゃんと2枚のサンプルを理解していればいけるはずだ
169デフォルトの名無しさん:2009/08/05(水) 09:25:39
なんか今年はOpenGLに勢いが感じられるね。
170デフォルトの名無しさん:2009/08/05(水) 19:21:28

main関数内のglutMainLoop();
に入ったらすぐにエラーか何かでプログラムが終了してしまいます。
何が原因なんでしょう?

下のようなメッセージが出ているのですが関係あるんでしょうか?

'C:\WINDOWS\system\glut32.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'C:\WINDOWS\system32\nvoglnt.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
171デフォルトの名無しさん:2009/08/05(水) 20:15:48
WebGLが面白そうだ
172デフォルトの名無しさん:2009/08/05(水) 22:10:11
複数のパスを使ったシェーダーを記述するのに使う標準形式ってないんですか?
COLLADA FXというのがあるみたいですが、どういうものなのかよく分かりません。
自分のプログラムに使えるんでしょうか。

シェーダーを記述するのに使うツールって何使えばいいんでしょうか。
現在AMDのRenderMonkeyしか知りません。NVIDIAはFX Composerというのがあるみたいですが
HLSLのみで、GLSLは対応していなかった気がします。
173デフォルトの名無しさん:2009/08/05(水) 22:59:21
Texture Unitが二つしかない環境で開発してるとか?<165
174デフォルトの名無しさん:2009/08/06(木) 00:24:31
>>170
エラーか何かで終了するだけじゃわかりません。正常終了かもしれません。
そのメッセージは関係ありません。

>>172
特に標準形式といったものはない
とにかく複数のパス用のシェーダを通せばいいだけなので何でもいいとも言える
COLLADAでもいいけど読み込むのは結構面倒
GLSLじゃなくてCgでもいいならCgFXが読み込みは楽だよ
175デフォルトの名無しさん:2009/08/06(木) 04:28:32
int main(void){
/* コールバックとか色々中略 */
glutTimerFunc(16, timer, 0);
glutMainLoop();
}

void timer(int value){
glutPostRedisplay();
glutTimerFunc(16, timer, 0);
}

GLUTの解説サイトによくあるコードなのですが、
glutTimerFuncをこのように利用すると、メモリリークする症状が見受けられました。
他の関数での末尾再帰はコンパイラで最適化されて起こりません。
関数の仕様なのでしょうか?
176デフォルトの名無しさん:2009/08/06(木) 04:42:34
スクリーンの特定の領域だけをアップデートする方法はありませんか
177デフォルトの名無しさん:2009/08/06(木) 04:47:14
glScissor()を使え
178デフォルトの名無しさん:2009/08/06(木) 05:02:44
>>175
メモリーリークなどしません。原因は他にあるのでデバッグしてください
179デフォルトの名無しさん:2009/08/06(木) 05:07:26
>>175
timer()が末尾再帰しているとでも言いたいのか?
そもそも末尾再帰なんて全く関係ない。普通にデバッグしろ。
180デフォルトの名無しさん:2009/08/06(木) 06:45:58
おおかたDisplay関数あたりで肥大してんじゃねーの?
181デフォルトの名無しさん:2009/08/06(木) 09:55:07
>>172
CgFXをVisualStudio用のHSLS記述アドオンのInteliShadeで書いてる。
今の所ソースの色分けと関数の折りたたみと組み込み型、関数のインテリセンスぐらいしか利かないけど、
3.2が出るのが待ち遠しい。
182デフォルトの名無しさん:2009/08/06(木) 13:54:29
>>177
ありがとうございますだ

特定のピクセルに点を打ちたいときはどうすればいいんでしょう
pixelAt(int x, int y)
のような感じでスクリーンの左上からx,yの位置にあるピクセルに点を打ちたいのです
183デフォルトの名無しさん:2009/08/06(木) 14:11:13
>>182
手っ取り早いのはglRasterPos+glDrawPixels/glBitmapの組み合わせ。
ただし基本的にはノース経由のバスで座標データがやり取りされるから、そこがボトルネックになって遅くなるのは確か。

すでに送ってあるテクスチャとかをpix to pixに書くには、
射影行列をロールバックしてorthoな射影で書いて、
その後射影行列を元に戻すといった操作が有効。
auxバッファに蓄積してglCopyPixelsを使うという手もある
184デフォルトの名無しさん:2009/08/06(木) 14:12:54
>>182
glRasterPos2*()/glWindowPos2*()とglDrawPixels()でいける
glScissor()もそうだが、もうこういうことは全部シェーダーでやる時代なんだよな
185デフォルトの名無しさん:2009/08/06(木) 17:48:24
>>183
>>184
glRasterPos2fとglDrawPixelsで動作を実現できました
ありがとー
186デフォルトの名無しさん:2009/08/07(金) 20:59:18
GSLS ESにて、画像の2値化を
シェーダでやってみたいのですが可能でしょうか。
無知な初心者で申し訳ございませんが、
ご教授お願い致します。
187デフォルトの名無しさん:2009/08/07(金) 23:29:00
二値化したい画像をテクスチャとしてバインド
ピクセルシェーダで二値化しつつ描画
でおk
188デフォルトの名無しさん:2009/08/08(土) 09:21:54
>>187さん
ご回答ありがとうございます。
処理フローはなんとなくイメージできたのですが
"ピクセルシェーダにてニ値化する"点について
詳しくご解説して頂けませんでしょうか。
189デフォルトの名無しさん:2009/08/08(土) 13:57:35
>>188
vec3 tcol = テクスチャから拾ってきた色;
if (どっちの色?(tcol)) (
 gl_FragColor = 色1;
) else (
 gl_FragColor = 色2;
)
ってやるだけ
190デフォルトの名無しさん:2009/08/08(土) 14:48:54
>>189さん
ご解説ありがとうございます。
あとは、参考書片手にやってみます。
ご丁寧にありがとうございました。
191189:2009/08/08(土) 16:23:07
ゴメン突っ込まれる前に一つ言い訳させて
ifの複文の{}が()になってるのは単なる打ち間違いデスorz
自分の使ってるキーボード、(){}[]が全て同じキーなもので(修飾キーで打ち分ける)
しかも古いCRTのフォーカスが甘くなってて打ち間違いに気付かなかった
もういい加減LCDに買い換えるか・・・
192デフォルトの名無しさん:2009/08/09(日) 03:48:44
このスレではGSLSとかHSLSって書くの流行ってるの?
193デフォルトの名無しさん:2009/08/09(日) 10:24:35
OpenGLでWebサイトを表示したりできないでしょうか。
ポリゴンの上にHTMLをレンダリングしたいのですが。
194デフォルトの名無しさん:2009/08/09(日) 10:25:42
OpenGL利用してる方々、衝突判定について、質問させて頂きます(あえて、数学板ではなくて)。3次元座標上の

一点が移動前と移動後で、ある平面上の三角形と衝突しているかどうかです。

移動前の座標:P0=[x0, y0, z0]、移動後の座標:P1=[x1, y1, z1]
平面:aX + bY + cZ = D 上にある三角形[x2, y2, z2], [x3, y3, z3], [x4, y4, z4]

1)まず平面を通過したかどうか判定
2)平面上の通過点を求める
3)その通過点が三角形内部にあるかどうを判定

で、質問は1)なんですが、教科書によると、平面の法線ベクトルN=[a, b, c]とP0、P1の内積を使ってP0・N + D

とP1・N + Dの積が負だと1)の判定に合格するのですが、どうしてDを足すのかが理解できません。

衝突判定で悩んだ方、どうかお助けください。よろしくおながいしますだ。
195デフォルトの名無しさん:2009/08/09(日) 10:31:06
それ足すんじゃなくて引くべきじゃないか? aX + bY + cZ + D = 0なら兎も角
196デフォルトの名無しさん:2009/08/09(日) 11:12:39
>>195さん、どうもありがとうございます。教科書によるとDは加算になっています。

float locationToPlane(float triangle[3], float againstLocation[3]) {
float normal[3];
triangleNormal(triangle, normal); // 平面の法線ベクトル算出

float A = normal[0] * triangle[0];
float B = normal[1] * triangle[1];
float C = normal[2] * triangle[2];
float D = A + B + C;

return DOT(normal, againstLocation) + D; // DOTは内積の計算
}

上のようになっていて、(P0・N + D)×(P1・N + D) < 0 だと平面を通過したことになるそうです。
この方法(アルゴリズム)を是非理解したいのですが、みなさんよろしくおながいしますだ。
197デフォルトの名無しさん:2009/08/09(日) 11:30:05
>>196
>>195のいうように、その場合の
平面の方程式は「aX + bY + cZ + D = 0」で
「aX + bY + cZ = D」が間違ってるんだろ。

しかし、>>196のコードは意味不明だなぁ。
198デフォルトの名無しさん:2009/08/09(日) 11:44:45
教科書が間違ってるか、194さんが教科書を読み間違ってるかのどっちかでしょうねぇ。
平面の方程式を aX + bY + cZ = D と置いたなら、表裏判定は aX + bY + cZ - D > 0 ? になるし、
aX + bY + cZ + D = 0 と置いたなら、表裏判定は aX + bY + cZ + D > 0 ? になりますよ。
>>196のコードは>>194の1)とは関係無いっぽいし、なんか194さん勘違いしてるんじゃないかな。
199デフォルトの名無しさん:2009/08/09(日) 11:46:49
>>197さん、どうもありがとうございます。>>194の平面式の部分は私が書いたのですが、教科書の著者は aX + bY + cZ - D = 0 を念頭に置いていたみたいですね。>>195さんが正しいです。すみません。

>>196のC言語関数は、aX + bY + cZ - D = 0 に通過前の点 P0=[x0, y0, z0] を代入しているのだと思います。内積という言葉が教科書で使われていましたから、それで混乱してしまって。

でも、同じように通過後の点 P1=[x1, y1, z1] を代入して、result0×result1 < 0 だと平面通過判定合格なんですが、どうしてそうなるのかがわかりません。証明を知りたいんですが、どなたかよろしくおながいしますだ。
200デフォルトの名無しさん:2009/08/09(日) 11:50:53
>>198
おお、どうもありがとうございます。
Cの関数>>196で使っているtriangleは平面上にありますので、それで法線ベクトル[a, b, c]を算出してるんです。

すみません、>>198さんのおかげで理解できました。表裏判定してて、それで積が負になると平面通過判定合格なんでつね!

みんなありがとう!!!恥かいたけど、聞いてよかた。 ^^;
201デフォルトの名無しさん:2009/08/09(日) 11:52:56
|↑(a, b, c, D)・↑(x, y, z, 1)/sqrt(a^2+b^2+c^2)| が平面 0 = aX+bY+cZ+D と点(x, y, z) の距離を表すって知ってるかな?

分からないなら手計算で解いてみ(実はコレ小学校で習うけど)。
202デフォルトの名無しさん:2009/08/09(日) 12:04:44
>>Cの関数>>196で使っているtriangleは平面上にありますので、それで法線ベクトル[a, b, c]を算出してるんです。 
細かいことなんでスルーでいいんだけど、平面上の1点から法線は出せないだろ。
少なくとも3点無いと。
203デフォルトの名無しさん:2009/08/09(日) 12:13:15
> float triangle[3]

こりゃ確かにおかしいなw
float triangle[3][3] とかしないと
204デフォルトの名無しさん:2009/08/09(日) 12:18:02
>>202-203
みなさん、本当ご親切にありがとうございます・・・・
また、わからなくなってしまいました。ちょっと他のコードも調査してみます。

^^;
205デフォルトの名無しさん:2009/08/09(日) 12:30:08
>>202-203さん、わかりました。教科書>>196間違ってます!引数のとこで配列サイズ指定する必要無し
ですね!正しくは、3を9に変えるか、3を消去するかですね。

float locationToPlane(float triangle[9], float againstLocation[3]) {
    float normal[3];
    triangleNormal(triangle, normal);

    float A = normal[0] * triangle[0];
    float B = normal[1] * triangle[1];
    float C = normal[2] * triangle[2];
    float D = A + B + C;
    
    return DOT(normal, againstLocation) + D;
}
206デフォルトの名無しさん:2009/08/09(日) 12:35:12
>>205
>     float D = A + B + C;
ここでそうするなら
>     return DOT(normal, againstLocation) + D;
ここでは引け
207デフォルトの名無しさん:2009/08/09(日) 12:38:38
>>205
だね〜。
で、あとは例えば、
その関数locationToPlane()に、againstLocationとして3頂点のうち1点を渡してみて
ちゃんとゼロが変えればOKだね。
208デフォルトの名無しさん:2009/08/09(日) 12:40:26
>>206さん、どうもです。教科書、間違いだらけですね。 ^^;
しかし、>>205の問題ってGCC警告出してくれないんですもん。
209デフォルトの名無しさん:2009/08/09(日) 12:45:49
それ書籍とかじゃなくて誰かの落書きじゃないのか?
210デフォルトの名無しさん:2009/08/09(日) 13:39:46
>>205
でも、typedefさえしないのけ。

typedef struct {
 float x, y, z;
} point;

openglってこういうことしねーよな。実行速度なんて変わらんよ。
readabilityっていう概念0だな。
211デフォルトの名無しさん:2009/08/09(日) 13:42:26
そもそもOpenGLの話しじゃないからな
212デフォルトの名無しさん:2009/08/09(日) 13:55:19
いや、openglのコードって、vertex扱うのもfloat[3]だろ。
けっきょく配列のindex使ってんだから、構造体使っても速度同じ変わらんって。
213デフォルトの名無しさん:2009/08/09(日) 14:08:35
線形代数ライブラリは、車輪の再発明多いし
標準化してもらってもいいかもね。
つーかboost::ublasが以外に使いやすいんでお勧め。
matrix4x4程度で速度が出るのかはわからんが。
214デフォルトの名無しさん:2009/08/09(日) 14:55:16
>>213
でもグラボ(OpenGL対応の)って、日本のメーカーもつくってんだからさ、
NECとか富士通(も?)、日本からこういう技術を発展させるような動きって
出てこないのかね。

東大を始め、CGの世界じゃ日本の研究機関ってプレーヤーでさえ無いんだよな。
215デフォルトの名無しさん:2009/08/09(日) 14:58:24
>>213
線形代数ライブラリは、CPUのベクトルユニットを使う/使わないの判断が
個々人に委ねられるというのも大きいし、標準化はし辛いんじゃないかな。
それに、頂点列やピクセルデータは単なるfloat(とかbyteとか・・・)の配列である。
っていうのがOpenGLのポリシーであるように感じられる。
自分で作っても大した規模にならないし、面倒なら>>3あたりやboost::ublasを使えばいいし
ってことで、今後も標準化は無いんだろーなーと。個人的にも必要性を感じない。

あー、京大の人のコメントは要りませんよ。
216デフォルトの名無しさん:2009/08/09(日) 15:15:04
使うときには普通に>>210みたいにするけど、openGLの仕様で決まってると不便じゃないかな
CやC++専用じゃないんだし
217デフォルトの名無しさん:2009/08/09(日) 15:47:20
俺もちょっと前にそれで悩んだ。
C用で、そこそこのパフォーマンスが出て、非GPLでとなると選択肢はほとんど無いのよね。
結局、

#define LOOP4(m) m(1) m(2) m(3) m(4)
#define LOOP44(m)             \
  m(1,1) m(1,2) m(1,3) m(1,4) \
  m(2,1) m(2,2) m(2,3) m(2,4) \
  m(3,1) m(3,2) m(3,3) m(3,4) \
  m(4,1) m(4,2) m(4,3) m(4,4)
#define LOOP444(m) ……

みたいなマクロを定義して、

#define VEC_DEF_ITER(i) typedef GLfloat vec##i[i];
LOOP4(VEC_DEF_ITER);
#undef VEC_DEF_ITER

#define MAT_DEF_ITER(i, j) typedef GLfloat mat##i##j[i][j];
LOOP44(MAT_DEF_ITER);
#undef MAT_DEF_ITER

と自前で作っちゃった。
218デフォルトの名無しさん:2009/08/09(日) 16:02:47
>>217
だめだだめだ、そんなんreadabilityゼロだ。
日本はCGの世界ぢゃ、全然相手にされてないんよ。
俺、素粒子の物理屋だけどさ、欧米のCG関連の学会出てごらん。

日本の論文なんて引用ゼロに近いし、なんかsiigraphなんかでも通過してる
日本人研究者の論文ってほんとお情けで通してもらったってのがミエミエ。

ひどいよ、特に曲線曲面の理論発展には日本人の寄与度ゼロだと断言できる。
>>215京大もこの分野ぢゃ東大と同じく、プレーヤーでさえないよ。
物理畑じゃお互い世界で認められてるけどな。
219デフォルトの名無しさん:2009/08/09(日) 16:05:57
また変なのが釣れた……
220デフォルトの名無しさん:2009/08/09(日) 16:09:32
東大 京大はNG推奨
221デフォルトの名無しさん:2009/08/09(日) 16:12:46
またというか同じ人だろうな
222デフォルトの名無しさん:2009/08/09(日) 16:14:21

GLには哲学が無いよ。設計者がシリコングラフィックス社っていう、糞ベンチャーの
先駆けにいた三流エンジニアだからな。

抽象化のなんたるかが分かってねーし、設計っていう概念もないからフレームワーク化にまで
頭が回らないつーか、お粗末で頭が回転しない。

それで日本だが、こんな出来損ないの技術を信奉してる連中が拡大再生産されてる現状を俺は
憂う。別に京大を棚に上げるわけぢゃないが、東大をはじめ、CG関係の教育がマジ貧しい。特に
高等教育がぜんぜんだめだ。GL学生に教えてイェーイ、マテマティカ大金出して(国立だと税金)買って
線分画面にさせるスクリプト学生に書かせただけで(しかも2Dで)イェーイなんての
ばっかだ。

CGの分野じゃ日本は完敗よ。数学力の問題だとネラどもは言うかもしらんが、そうじゃないんだ。

設計っていうのはな、つまるところ哲学・抽象的思惟能力に左右されるんだ。
物理屋の俺に指摘されてもハッとこない連中、特にNECやSCE、富士通、あと
ジャパネットたかたあたりで細々と開発してる連中、おまえらはプレやーでさえない。
223デフォルトの名無しさん:2009/08/09(日) 16:16:16
じゃあスルーして、お前ら結局ベクトル型どうしてるの?
boost::ublasって固定長ベクトルできないよね? なんか無駄しちゃってる気がするんだよね。
224デフォルトの名無しさん:2009/08/09(日) 16:17:37
コピペ乙
225デフォルトの名無しさん:2009/08/09(日) 16:19:16

いや、物理屋に言わせるとさ、日本のCG関連の技術者・研究者、税金ドロボー
してんぢゃねーっつぅの!!!

まじで。

研究でCG関連の技術俺等も使うこと、多いんだけどさ、お前等マジ何してんだよ
って感じぃ。
226デフォルトの名無しさん:2009/08/09(日) 16:27:36
>>223
3次元ベクトルは自作したのを使ってる。
227デフォルトの名無しさん:2009/08/09(日) 19:23:11
皆さんに質問です。最近OpenGLを使って3Dのアプリケーションを作って
遊んだりしています。その過程で、グラフィック関係の記事やblogを見
てシェーダーというものがあるのを知りました。私はこれも興味をひか
れているですが、ネット上の記述や説明では私には理解できません。
シェーダーとは何のためにあり、どんなことができるのでしょう?
OpenGLでコードを描くよりも優れているのでしょうか?
228デフォルトの名無しさん:2009/08/09(日) 19:37:57
>>227
調べたら普通に概念程度ならわかる気がするけど。
簡単に言えば、シェーダーを自前で書かない場合はOpenGL標準のライティングでしか絵を表現できないけど、シェーダーを自分で書くことによって自分好みのライティングにできる。(←これをプログラマブルシェーダーと言う。)
OpenGLに対応するシェーダーとしてはGLSL等があって、それらはOpenGLと組み合わされるものであって単独で何かができるものではない。

ここではライティングについて言ったけど、実際にはシェーダーの応用で2次元・3次元ともに様々な表現ができるようになる。
229デフォルトの名無しさん:2009/08/09(日) 19:40:37
技術の外延が分かってないなあという意味では、
床井先生のところでバンプマッピングを静止画で出してたのは、あんま意味ないかなと思った。
「どの方向に光源があってもそれっぽいテクスチャが付く」ことが技術の肝だから、
光源に対して物体を動かしたときにこそ質感に大きな差が出るんだけどね。
230デフォルトの名無しさん:2009/08/09(日) 20:15:23
>>227
まず、OpenGLのパイプラインアーキテクチャは分かるかな?
バーテックスシェーダは、「頂点単位の座標変換とライティング計算」を一般化したもの、
フラグメンテシェーダは、「フラグメントに対するテクスチャ適用」ステージを一般化したもの
なんだけど、上の括弧書きした部分が何を言ってるのか分からないようだと、シェーダの利点を
挙げても、???って感じになっちゃうと思う。
231デフォルトの名無しさん:2009/08/09(日) 20:21:00
>>216
C以外でも使えるよう十分に低レベルなAPIにしたら、
逆にJavaでそのままのカタチでは使えなくなってしまったという罠ww
難しいもんだねぇ‥‥

あと放ったらかしになってる>>193
なんらかのHTMLレンダラで絵を作るとこまでいけば、それをテクスチャにして表示できますよ
‥‥ってもしかしてGLでHTMLのレンダリングそのものをやりたいって話?
232デフォルトの名無しさん:2009/08/09(日) 21:21:21
GLSLで書いたシェーダプログラムって、
画面描画の際に勝手に動いているって解釈で会っていますか?
233デフォルトの名無しさん:2009/08/09(日) 21:39:14
>>232
大体合ってるw
VSなら頂点一つずつ、FSならフラグメント一つずつごとに、
同じシェーダがそれぞれ動作するよ
234デフォルトの名無しさん:2009/08/09(日) 22:00:09
>>233さん
ありがとうございます。
OPENGL ESで画像を表示しようとしたらglDrawPixelsが
サポートされてなくて困っています。
だれか解決案を教えて頂けませんか。
235デフォルトの名無しさん:2009/08/09(日) 22:02:03
テクスチャを作って描画するしかないねぇ
236デフォルトの名無しさん:2009/08/10(月) 01:19:06
>>228
>>230
ありがとうございます。ただ、正直???てな感じです。赤本読み直します。
237デフォルトの名無しさん:2009/08/10(月) 01:21:49
>>235
むしろ、ESでないとしても、同じ画像を何回も表示するならテクスチャに貼ってVRAMにキャッシュしておくこと推奨だよな。
Orthoに戻すのが面倒ではあるが。
238デフォルトの名無しさん:2009/08/10(月) 03:33:56
>>229
バンプの意味は「どの方向に光源があっても」じゃなくて、
「張られた面がどの方向を向いていても」それっぽい影がつくってことだと思うけど。
だから静止画でも立体に張ってれば効果はよくわかるからいいじゃんよ。
239デフォルトの名無しさん:2009/08/10(月) 09:14:27
どちらにしろバンプマッピングはグリグリ回してみないと実感はしにくいね。
発展して視差遮蔽マッピングになってしまうけどDirectX SDKのサンプルにわかりやすいのがあったな。
OpenGLとしてもOpenTKのフォーラムに視差遮蔽マッピングのサンプルがあった。
240デフォルトの名無しさん:2009/08/10(月) 09:34:45
鶏を割くに焉んぞ牛刀を用いん
241デフォルトの名無しさん:2009/08/10(月) 20:33:34
尼で頼んでたOpenGL Library、発売日とっくに過ぎてるのに中々発送しねーなと思ってたら、
発送予定日が23日になったとかメールが来た。

夏休みに読もうと思ってたのにkonozamaかよ。
242デフォルトの名無しさん:2009/08/10(月) 21:32:46
>>237
VRAMにキャッシュ?!

mallocのことでしょ?

なんか特別な操作するの?
243デフォルトの名無しさん:2009/08/10(月) 22:17:00
http://alb.hp.infoseek.co.jp/opengl_fbo.html
Depthしか使わない場合のFBOの設定の仕方が書いてありますが、
逆にColorしか使わないときはどうするんですか?

GeForce FXだとFBOは対応しているのにNPOTが未対応のようですが
これだと描画するときにテクスチャ座標の指定が面倒そうです
244デフォルトの名無しさん:2009/08/10(月) 22:24:52
>>242
ええー‥‥。
237さんの言ってること‥‥分からないですか??
245デフォルトの名無しさん:2009/08/10(月) 22:47:32
>>244
そんな意地の悪いこと言わなくても・・・
246デフォルトの名無しさん:2009/08/10(月) 23:00:27
んあー。意地悪かったのだろうか。
ごめん、別にそういうつもりは無かったんだけど‥‥ちょっと、ビックリしちゃったもんで。
247デフォルトの名無しさん:2009/08/10(月) 23:06:03
別に意地悪じゃないだろ。
glTexImage*()が何をするのかを全く理解していないようだから
しっかり赤本読んでおけ。
248デフォルトの名無しさん:2009/08/10(月) 23:28:32
お前等、また同じ過ち犯してるよ。

木を見て森を見ずだ!

もっと視野ひろげようよ。
そんなどこのメモリに領域確保しようが、そんなこん抽象化して
使いやすくしとかんきゃ、そらもうAPIとして失格なんよ。

まぁ、OpenGL作った連中に頭が上がらんのが殆どだからな。
東大を始めCG関連、日本の技術は貢献度ゼロだ。よっておまえらの
程度が低いのも当然だな。

設計が何かってわかってないよ、設計とは何かが。
249デフォルトの名無しさん:2009/08/10(月) 23:40:06
>>248
>>1を読め。荒らしはお断りです。
250デフォルトの名無しさん:2009/08/10(月) 23:43:36
>>249
だからー。おかしな人に触れちゃダメだってばー。
どうせ何言っても無駄なの分かってるでそ?
251デフォルトの名無しさん:2009/08/11(火) 00:42:52
ここまで自演
252デフォルトの名無しさん:2009/08/11(火) 00:46:46
>>251
こいつが一番頭がおかしい
253デフォルトの名無しさん:2009/08/11(火) 07:47:34
またバカが湧いているのね。
小学校の夏休みが終わるまでしばらくこんな感じか。
254m9('v`)ノ ◆6AkAkDHteU :2009/08/11(火) 21:41:28
>>249-253
おまえら、結局思想的に、つーか哲学がねぇんだよ。

だからOpGLをありがたーく使ってりゃいいんだよ。

まぁ、NECや富士通の技術者なんてこの程度かこれ以下
なんだろうなw

哲学がねーよ、哲学が。
255デフォルトの名無しさん:2009/08/12(水) 01:25:11
お、今日はコテがついたw
256デフォルトの名無しさん:2009/08/12(水) 07:39:15
マウスで中のオブジェクトを動かすのってどういう方法がオススメですか?
257デフォルトの名無しさん:2009/08/12(水) 07:40:00
>>256
ごめんなさい

マウスで中の→マウスで描画領域の中の

です
258デフォルトの名無しさん:2009/08/12(水) 07:50:24
ピックアップでggrks
259デフォルトの名無しさん:2009/08/12(水) 14:49:32
openglレベルだと「セレクション」じゃないかな?
私は使ったことないけど
260デフォルトの名無しさん:2009/08/12(水) 15:12:40
というか沢山あるオブジェクトの中から一部だけをピッキングしたいなら
セレクションを使うけど、シーン内のオブジェクト全体をを回転/移動/
スケーリングしたいだけなら、virtual trackballが便利。適当にググれば
コードでも数式でも出てくると思う。
261デフォルトの名無しさん:2009/08/12(水) 18:08:59
>>260
256-257からどっちの意味なのか読み取れないからメンドクセと思って
私はレスしなかったけど、あなたは親切だねぇ。

(ちょっと話それますよ)

セレクションて最初はすっごい便利なんだけど、段々アプリが成長して
構造が込み入ってくると、そのうち限界がくるんだよね。
そうなるとシーングラフが欲しくなってくる。というかシーングラフってほとんど
ピック処理とか当たり判定だけのために欲しい。(描画だけならSGイラネw)

‥‥が、シェーダ流行な昨今、シーングラフはバーテックスシェーダと相性が悪い。
(gl_Position = ftransform(); なシェーダなら問題無いですけど)
その辺うまくやってる方っていらっしゃいます?

当たり判定用オブジェクトは表示データとは別、って割り切るしか無いのかなぁ。
262デフォルトの名無しさん:2009/08/12(水) 18:28:23
すまん。ピッキングの実装にセレクションが使われるものと
思ってるんだけど、あってる?

そういう考えで、「openglレベルなら」って書いたんだけど。
263デフォルトの名無しさん:2009/08/12(水) 18:42:17
>>262
>ピッキングの実装にセレクションが使われるもの
ピッキングの実装にセレクションを利用することができる、という意味では合ってるし、
ピッキングの実装にセレクションを利用する必要は無い、という意味では間違ってるかな。

>>259の書き方には特に問題無いと思うます。
264デフォルトの名無しさん:2009/08/12(水) 19:27:53
>>263
レスありがとう。
よく分かった。
265デフォルトの名無しさん:2009/08/13(木) 17:02:01
windows XP、デュアルディスプレイ環境で
glutFullScreenでフルスクリーン化をしているんですが、
メインディスプレイでフルスクリーン化してしまいます。

サブディスプレイでフルスクリーン化したいのですがどのような方法がありますか?
266デフォルトの名無しさん:2009/08/13(木) 18:36:47
>>265
FindWindow()かなんかでウィンドウハンドルをとってきて
SetWindowLongとかSetWindowPosで枠無しにしてサブディスプレイのフルスクリーンに合わせる
サブウィンドウのサイズはEnumDisplayMonitors()で拾ってこれるみたい

検証してないんでglutの内部で持ってるウィンドウ情報と実際のウィンドウがずれるからなんか問題おきるかも
大丈夫な気もするけど
267デフォルトの名無しさん:2009/08/13(木) 23:58:10
AndroidでOpenGL ESの勉強始めたんだけど、
AndroidにはglRenderMode()がなくて、セレクションとか
フィードバックが使えないみたい。

OpenGL ESの1.0とか1.1ぐらいだと、
ピックアップする方法ってみんなどうやってるの?
268デフォルトの名無しさん:2009/08/14(金) 04:12:53
>>266
おお、検証してみます
ありがとうございます
269デフォルトの名無しさん:2009/08/14(金) 10:38:02
>>267
ピックは本来GLと関係無い処理なので、純粋に幾何学計算で交差判定をします。
一応、オブジェクトごとに固有の色(IDの代わり)でレンダリングしてglReadPixels()する
という方法も無いではないけど‥‥。
270デフォルトの名無しさん:2009/08/14(金) 11:03:47
WinVista/C++でopenglモデル管理クラスDLLを作って、
その中でglGenLists(a)を呼び出すと常に0が返ってきて
しかもプログラムが落ちるという現象が起こってるんですが、
DLLだとopengl32.dllのスタティック領域にアクセスできないとかなんでしょうか?
271270:2009/08/14(金) 11:27:57
補足として。ソースはこんな感じです。全部だと長いので要所のみ
class APIENTRY model
{
private:
GLuint id;
public:
model()
{
id = glGenLists(1);
//常時0
//wglコンテキストを呼んでいる場合エラー落ちする
}
~model()
{
glDeleteLists(id,1);
}
void render()
{
glCallList(id);
//描画されず
 }
void modeling(...){...}
};
272デフォルトの名無しさん:2009/08/14(金) 12:15:46
glGetErrorの戻り値は調べた?
273デフォルトの名無しさん:2009/08/14(金) 12:29:03
>>271
全然要所になってないぞ。どこでそのクラスをインスタンス化しているかが重要。
まさかMakeCurrentもせずにやってるとか言わないよな?
274270:2009/08/14(金) 12:52:34
ためしにクラスを用いず
int main()
{
 using namespace std;
 GLuint hoge = glGenLists(1);
cout << (unsigned int)hoge << endl;
cout << glGetError() << endl;
};
としたところ、hoge=0、エラー=1282でした。
Vistaのopengl32.dllが悪いんでしょうか。。。

>>272
エラーを調べたところなぜかGL_INVALID_OPERATION(1282)が返ってきました・・・。

>>273
Listを使わず直接描画させた場合は正しく描画できましたので、
デバイスコンテキスト/ピクセルフォーマット設定/レンダリングコンテキスト/コンテキスト関連付け等は
とりあえずあってると思います。
275デフォルトの名無しさん:2009/08/14(金) 12:55:51
>>274
全然分かってないな。コンテキストが無いとdlistは作れない。
276270:2009/08/14(金) 13:00:51
>>275
解決しました!
コンテキストのある間しかglにアクセスできないんですね・・・。
ありがとうございます!
277デフォルトの名無しさん:2009/08/14(金) 14:09:34
>コンテキストのある間しかglにアクセスできない
当たり前だー!
って感じなんだけど、初心者的には結構罠だったりするね

そしていまだに、たまにやらかす俺様もダメぽorz
278デフォルトの名無しさん:2009/08/14(金) 17:45:25
OpenGL ESでシェーダプログラムを組んでたんですが、
ベクトル型変数への加算をfor文で行ってたら、
シェーダプログラムが落ちちゃうんですが
仕様なんでしょうか?
以下のエラーメッセージが表示されます。
Expression: ("Buffer too small", 0)
ループの回数を減らすと落ちないんですが・・・
279デフォルトの名無しさん:2009/08/14(金) 18:50:02
エラーの時にエラーメッセージが出てプログラムが停止するのは仕様じゃね。
デバッグすればいいじゃない
280sage:2009/08/14(金) 19:11:40
>>278
ループできないハード/プロファイルでループしたら
ループは展開されてその分レジスタがいるよ
281デフォルトの名無しさん:2009/08/14(金) 20:36:15
実行できる命令数に上限があるからじゃ?<落ちる
282デフォルトの名無しさん:2009/08/14(金) 20:55:29
「Expression: ("Buffer too small", 0)」でググるとシェーダーとか関係なさそうなんだけどどうなんだろね。仕様かねw
283デフォルトの名無しさん:2009/08/14(金) 23:49:14
ディスプレイリストをOpenGLコンテキスト間で共有していて、
共有しているはずなのに、
テクスチャの更新を行うとき有効になっていたコンテキストによって
glTexSubImage2Dが失敗するのは何故だ、と思っていたら

テクスチャのクラスで、glTexSubImage2Dする前にglBindTextureするのを忘れていた

のが原因だった。これのせいでどれだけ時間を無駄にしたか・・
284デフォルトの名無しさん:2009/08/16(日) 22:12:05
前スレ147あたりにオフスクリーンレンダリングについてまとめられていますが、
・OpenGLの拡張が使えない古いPCでも動く(どんな環境でも動作する)
・ウィンドウが表示されていなくても使用可能

なもので、いい方法はないでしょうか。新しめのPCだったら間違いなくFBOを使っているんですが。
glReadPixelsは後者を満たせないようなので無理です。
glCopyTexImage2Dでオフスクリーンレンダリングが出来るというのはどう言う事なんでしょうか?

147 名前:デフォルトの名無しさん[sage] 投稿日:2008/11/08(土) 21:19:41
・PFD_DRAW_TO_BITMAP
・glReadPixels
・glCopyTex[Sub]Image2D
・pbuffer拡張
・render texture拡張
・FBO(Frame Buffer Object)拡張
・PBO(Pixel Buffer Object)拡張
285デフォルトの名無しさん:2009/08/16(日) 23:26:04
>>284
普通glReadPixelsやCopyTexSubImage*はオフスクリーンレンダリングとは
言わないな。

FBOが理想だけど、それがサポートされていないような古いカードでもpbuffer
はサポートしていることが多い。それすらサポートしてないならAUXバッファを
使うけど、そんな古いカード/ドライバだとアクセラレーションが効くかどうかも
怪しいな。

render to texture拡張はFBOが出る前はWindows上で流行ったけど他の環境では
サポートれない場合が多い。

PFD_DRAW_TO_BITMAPはWindows専用、X上だとglxCreatePixmap()でOpenGLレンダリング
可能なPixmapを作成可能だが、少なくともXの場合はハードウェアレンダリングに
ならない。
286デフォルトの名無しさん:2009/08/16(日) 23:48:39
>>229
マウスで動かせるんだけどなー
287デフォルトの名無しさん:2009/08/17(月) 00:35:09
>>284
突き詰めればOpenGLの初期化手段が環境に依存するし
GLUTとかクロスプラットフォームのライブラリを使えば必ずウィンドウがおまけで付いてくる。
ある程度あきらめるか、複数の実装をコンパイルタイムとランタイム両方で切り替えるか、
要件満たしてない環境ではMesa使って下さいってことにするしかないよ。

>>285
> 普通glReadPixelsやCopyTexSubImage*はオフスクリーンレンダリングとは
言わないってことはないよ。バックバッファに書いてスワップせずにコピーするんだから。
288デフォルトの名無しさん:2009/08/17(月) 03:56:59
コインに似ている形を作りたいのだけど
組み方がわかりません。
あとものを上下に動かすプログラムを教えてください。
289デフォルトの名無しさん:2009/08/17(月) 04:13:15
まずコインを3次元スキャンして立体データを得るところから始めよう
290デフォルトの名無しさん:2009/08/17(月) 07:13:09
OpenGLの勉強をしたいのですが、いい入門書を教えてください。
291デフォルトの名無しさん:2009/08/17(月) 20:17:30
292284:2009/08/17(月) 22:36:40
>>285 >>287
あまり古い環境ではあきらめる事にします。Mesaなんてのがあるのは初めて知りました。
FBOがサポートしていなかったらpbufferとかを使うことにします。
ありがとうございました。
293デフォルトの名無しさん:2009/08/17(月) 22:45:44
FBOだけでいいよ。使えない環境を見つけるほうが難しい。
294デフォルトの名無しさん:2009/08/17(月) 22:49:01
OpenGLのレンダリングステートを全て保存して復元する方法ってないでしょうか。
何をしたいかというと、自分のプログラムに
他の人が作ったプラグインを使って拡張できる機能を付けたいんです。

でもそうしようと思うと、glEnable/Disableや行列の設定を変えたりしたせいで、次のプラグイン
の処理に影響が出ないようにする必要があります。初めはディスプレイリストを共有して
やろうと思っていたんですが、コンテキストの切り替えが思ったより高コストで無理でした。
20回ぐらいで10FPS程度に落ちます。

なので、Singletonを使い1つのコンテキストを全てのプラグインで共有するようにしようと思ったんですが、
レンダリングステートを保存/復元するプログラムを作ろうにも、
レンダリングステートを設定する関数が多すぎて把握し切れません・・・。
何か良い解決策はないでしょうか。
295デフォルトの名無しさん:2009/08/17(月) 22:54:02
プラグインを諦める
296デフォルトの名無しさん:2009/08/17(月) 23:10:11
どうせ優先度とか表示・非表示とかアプリ側からいろいろ指定したりしたく
なるので真面目にやるならコンテキストのラッパをプラグインに渡す
手を抜くならglPushAttribじゃね
297294:2009/08/17(月) 23:17:55
手抜きしたいのでglPushAttribを使います。
MANページでPushで検索してみたら
glPushAttrib
glPushClientAttrib
glPushMatrix
glPushName
があるようですが、Nameはセレクションモード?で使うようなので使うのは上の3つだけですね。
298デフォルトの名無しさん:2009/08/17(月) 23:23:25
プラグイン作成の手引きに、
「みんなのコンテキストです。変更した設定は元にもどしておいてください。」
って書いておけばいいんじゃね
299デフォルトの名無しさん:2009/08/17(月) 23:39:53
ソレダ!
300デフォルトの名無しさん:2009/08/18(火) 00:13:41
>>298
それは腐ったプラグインのデバッグやるはめになる死亡フラグだろ・・・
301デフォルトの名無しさん:2009/08/18(火) 01:13:18
デバッグするのは「腐ったプラグイン」の作者じゃん
302デフォルトの名無しさん:2009/08/18(火) 10:27:10
Listってモデルビュー行列のみなんでしょうか
Listでモデルとライティングは呼べる事は確認できたんですが
カメラ座標をListで登録して呼べないですかね?
303デフォルトの名無しさん:2009/08/18(火) 10:47:26
いや、登録できるよ?
glMatrixMode切り替え忘れてるんじゃない?
304302:2009/08/18(火) 10:58:17
>>303
登録
glMatrixMode(GL_PROJECTION)→glGenLists(...)→glNewLists()
→カメラ設定云々→glEndLists()

呼び出し
glMatrixMode(GL_PROJECTION)→glCallList(...)
のような形になるのでしょうか?

あとそれで思ったのですが、もし登録時に
glGenLists(...)→glNewLists()→glMatrixMode(GL_PROJECTION)
→カメラ設定云々→glEndLists()

とすれば、glCallList時にglMatrixMode()の切り替えが必要なかったりします…?
305デフォルトの名無しさん:2009/08/18(火) 11:29:48
ディスプレイリストは関数呼び出しを纏めてるだけだから、
登録時のアトリビュートがどうこうとかは関係ないよ。
特定の行列を変更したいならディスプレイリストの中でglMatrixModeを呼び出せばいい。
306302:2009/08/18(火) 11:31:16
>>305
ありがとうございます、おかげで解決しましたm-_-m
307デフォルトの名無しさん:2009/08/19(水) 02:58:29
Windows上の開発でOpenGLで3Dゲーム作る場合何言語が必要?
308デフォルトの名無しさん:2009/08/19(水) 03:21:42
日本語
309デフォルトの名無しさん:2009/08/19(水) 10:28:54
英語も
310デフォルトの名無しさん:2009/08/19(水) 18:43:51
あと、スワヒリ語もやっとくと、いざという時に便利
311デフォルトの名無しさん:2009/08/19(水) 19:14:31
つまんないレスしてないで、真面目に答えろよカス。お前のそういう所が嫌いだ
312デフォルトの名無しさん:2009/08/19(水) 19:16:03
2ちゃんでまともな答えを期待する方が間違い
そもそもの質問内容からして馬鹿過ぎるし
313デフォルトの名無しさん:2009/08/19(水) 19:23:08
ポリゴンの一部にテクスチャはるにはどうしたらいいんでしょう?
マジで助けて・・・
314デフォルトの名無しさん:2009/08/19(水) 19:51:10
どうしてそんな悪い質問の典型みたいな質問をしてくるんだ...
315デフォルトの名無しさん:2009/08/19(水) 19:52:24
OpenGL ESについて、ご質問させてください。
プログラマブルシェーダを使って、
指定した画像のエッジ強調などの処理を行っているのですが、
画像処理の結果を画面に描画しないことは可能でしょうか。
プログラマブルシェーダは画面描画契機で動作するので、
描画無しでプログラマブルシェーダによる画像処理は
不可能と考えているのですが・・・。
316デフォルトの名無しさん:2009/08/19(水) 20:22:15
>>315
簡単な方法としては、フレームバッファをスワップしなければ、描画結果は画面に出ないでしょう。
もっといいのは、Frame Buffer Objectを使う方法ですが。

ただ、「描画無しで」プログラマブルシェーダを動かすのは無理ですけどね。
描画しても画面に出さなければいいわけで。
317デフォルトの名無しさん:2009/08/19(水) 20:26:24
>>314
どのへんがですか?
318デフォルトの名無しさん:2009/08/19(水) 20:33:16
>>317
それが判らないなら君はこのまま一生掲示板で誰にも答えてもらえない人生を送るだけだから。
319デフォルトの名無しさん:2009/08/19(水) 20:35:06
良い質問の書き方

これこれこういことをやりたくて、こういう環境でこういうふうにやってみました。だけど、これがこうなって、こうなります。
ここを参考に、ここをこうしてみて、こうなることを期待したのですが、こういう症状がおきます。
どこかやりかたがまずいのでしょうか?
320デフォルトの名無しさん:2009/08/19(水) 20:38:58
>>313
無理なので、ポリゴンを分割してください。
あるいはGL_DECALとかでテクスチャを貼って、不要な部分はテクスチャの
アルファを0にしておけばそれらしく見えるかも。
321デフォルトの名無しさん:2009/08/19(水) 20:40:12
>>316さん
ありがとうございます。
esCreateWindowでウィンドウを作成した上で
描画しないとプログラマブルシェーダを動かすのは無理そうすね。
322デフォルトの名無しさん:2009/08/19(水) 20:49:17
>>318 >>319
なるほど、そういうことですか。
あんまり書き込みとかしてこなかったんで・・・すいません。
>>320
ありがとうございます。やってみます
323デフォルトの名無しさん:2009/08/20(木) 21:58:17
glreadpixelsでフレームバッファの情報を取ってきて
BMPファイルに出力なんてことを考えているんですが、
glreadpixelsで取ってこれるフレームバッファの情報は
ウィンドウに表示されている画像っで認識合っていますか。
ウィンドウを非表示にしている場合はglreadpixelsを使っても
動作しないという認識で合っていますか。
324デフォルトの名無しさん:2009/08/20(木) 22:10:13
リファレンス読んでから、そういう質問はしようね。
325デフォルトの名無しさん:2009/08/21(金) 01:11:40
MathGL++、なんで俺のような日曜プログラマでも気づけるようなバグが放置されてるんだ……

GLMatrix.hの
> inline T cofactorm13() const { return cofactor_maker(m2,m7,m8, m3,m4,m10, m10,m6,m11); }

> inline T cofactorm13() const { return cofactor_maker(m2,m7,m8, m3,m4,m10, m0,m6,m11); }
が正しい。逆行列で妙な値を出すからおかしいと思ったらまったく。

最新版ver.はconfigureやMakefile使えって書いてあるのに付いてないし
326デフォルトの名無しさん:2009/08/21(金) 01:14:53
直接言えよ。お前は馬鹿か?
327デフォルトの名無しさん:2009/08/21(金) 02:31:17
>>326
半島人はお帰り下さい。
328デフォルトの名無しさん:2009/08/21(金) 04:36:45
>>325
そんだけ使われて無いってことかも。自作したクラスライブラリを使ってる人も多いだろうし。
あと逆行列を求めたい時って実際には正規直行だったりすること多いし

フォーラムだと9も間違ってるってあるけどどうなんかね
http://sourceforge.net/forum/message.php?msg_id=6117876
329デフォルトの名無しさん:2009/08/21(金) 06:00:49
確認した、情報thx。
9も間違ってるね。
330デフォルトの名無しさん:2009/08/21(金) 16:43:39
すみません教えてください。

トランプみたいな板があって裏表に違うテクスチャを張りたいのですが
この場合表用、裏用の2つのポリゴンを用意しなければ行けないのでしょうか?
331デフォルトの名無しさん:2009/08/21(金) 19:26:34
>>330
そのとおりです〜
332デフォルトの名無しさん:2009/08/24(月) 12:43:17
Blenderで作成した3DデータをOpenGLで表示するには
どうすればいいでしゅか?
333デフォルトの名無しさん:2009/08/24(月) 13:22:58
まずBlenderで作成した3Dデータのファイルフォーマットの仕様を調べます
次にその仕様に従ってデータを読み込むプログラムを書きます
最後に読み込んだデータをOpenGLで描画します
334デフォルトの名無しさん:2009/08/25(火) 02:07:23
すばらしい完璧な回答だ
335デフォルトの名無しさん:2009/08/25(火) 04:53:55
>>332
wavefront objにexportして、GLUTについてるsmoothっていうdemoの入力にすれば表示される
遅くてもいいからとりあえず表示したい時ならばだけど
336デフォルトの名無しさん:2009/08/25(火) 11:18:14
>>335
ありがd
337デフォルトの名無しさん:2009/08/25(火) 12:21:06
>>333がかわいそうです
338デフォルトの名無しさん:2009/08/25(火) 12:40:37
完璧な回答にはレスが付きにくい
レスが欲しければ少し頭をひねれ
339デフォルトの名無しさん:2009/08/25(火) 21:57:30
>>337
いや、俺もいい回答だと思うよ。実に論理的だし何も間違ってない。
340デフォルトの名無しさん:2009/08/25(火) 22:02:58
そうかね、
質問者が望んでいない形、(第三者にとって)情報としても価値ない
そんな回答にも見えるがね。
341デフォルトの名無しさん:2009/08/25(火) 22:42:40
前スレで基地外が発生したことを考えれば、意地が悪くなるのも仕方ないというか。

まあ楽したいなら普通はOpenSceneGraphとかを使えと思う。
342デフォルトの名無しさん:2009/08/25(火) 23:07:02
>>333は確かに意地悪だとは思うけど、>>332みたいな質問をする人って
実際のところ>>333程度のことすら理解できてないんじゃないかって気もする。
なんか関数一発で表示できるとでも思ってるんじゃないかと。
343デフォルトの名無しさん:2009/08/25(火) 23:47:29
だね
344デフォルトの名無しさん:2009/08/25(火) 23:47:42
エスパー不要であることを暗黙に知らせるのには
「適当なローダかラッパのライブラリはありませんか」と聞くことだろうな。
345デフォルトの名無しさん:2009/08/26(水) 07:35:42
>>340
質問者が望んでいないかどうか良く分かるね
情報としての価値が無いのはあなたにとっての話しでしょ、初心者には有益な情報だと思います
346デフォルトの名無しさん:2009/08/26(水) 10:28:05
質問者にとって文末が「調べる」や「書く」で終わる回答は常に望まれた回答では無い
347デフォルトの名無しさん:2009/08/26(水) 10:32:49
自分で調べるのは嫌なのか
なまけものめ
348デフォルトの名無しさん:2009/08/26(水) 13:32:10
blenderのデフォルトのフォーマットでっていうのが
そもそも非推奨じゃなかったか?

仕様書とかもなかったような
349デフォルトの名無しさん:2009/08/27(木) 20:08:43
今日からオープンGLやるよ(´・ω・`)
350デフォルトの名無しさん:2009/08/27(木) 22:18:34
【衝突判定】についておたずねします。
立体図形の中を上下左右自由に行き来できるようにしたのですが(OpenGLで)、
衝突判定がどうしてもできないで困っています。

すべての三角形のデータでメッシュを構成してあって、視点移動が起きた時に
移動の前後で三角形に衝突したどうかを調べてます。

まだ素人なので衝突しているはずがない三角形についても衝突判定をしています。

みなさん、衝突判定のために立体データはグループ分けみたいなことをされてるん
でしょうか?
もう三次元モデルのファイルを作り上げてしまったので、グループ分けしないで
衝突判定するには全てのメッシュについて判定を行うしかないのかと悩んでます。

じょうずなアルゴリズムをご存じのかた、どうかご指導を。 <(__)>
351デフォルトの名無しさん:2009/08/27(木) 22:55:39
スレ違い
352デフォルトの名無しさん:2009/08/27(木) 23:15:32
>351そんなん言わんで答えてあげたら?
353デフォルトの名無しさん:2009/08/27(木) 23:18:10
可哀想…
>>351って最低だな
354デフォルトの名無しさん:2009/08/27(木) 23:27:08
おおざっぱな判定でよければAABBが最強
355デフォルトの名無しさん:2009/08/27(木) 23:46:44
> まだ素人なので衝突しているはずがない三角形についても衝突判定をしています。
> 衝突判定がどうしてもできないで困っています。

矛盾してるな
356デフォルトの名無しさん:2009/08/28(金) 02:10:16
正しい衝突判定が、だろ
分かってるくせに
357デフォルトの名無しさん:2009/08/28(金) 08:09:38
衝突判定といっても、高速性が求められる場合もあれば、正確性が求められる場合もあるし、
迷路ゲームみたいにカメラが動くだけで物体は固定の場合もあれば、
群集やパーティクルみたいに大量の物が動きまくって判定しないといけない場合も。
どうしてますか?って聞かれれば、ケースバイケースで、うまいことやってますとしか答えられないような
358デフォルトの名無しさん:2009/08/29(土) 06:44:44
衝突判定って実は難しいって事だけまずは知っておけ。
359デフォルトの名無しさん:2009/08/29(土) 17:31:29
bulletつかうとか
360デフォルトの名無しさん:2009/08/29(土) 20:24:55
お返事が遅れてすみません。350です。
「長渕剛にだったら喧嘩余裕で勝てるよ」って他で書いたら
めちゃくちゃな反応されてたもんで。

先ずむかつくのが>>358だな、馬鹿丸出しだし。
>>351については木黄山強に顔射でもされるといいよ。

つーか、役に立たんな2chは・・・
361デフォルトの名無しさん:2009/08/29(土) 20:41:55
夏休みの宿題終わったのか? 2chばっかやってると後悔すっぞ
362デフォルトの名無しさん:2009/08/29(土) 20:42:41
第三者のいたずらレスだろう
363デフォルトの名無しさん:2009/08/29(土) 20:48:06
面白いと思ったんだろうか
364デフォルトの名無しさん:2009/08/29(土) 20:48:58
真剣な人間にはヒントの宝庫だけどな、このスレ
365デフォルトの名無しさん:2009/08/29(土) 20:54:29
2cnなんだから、多くを求めないどこようよ。
366デフォルトの名無しさん:2009/08/29(土) 21:20:58
変なのが消えて、また過疎スレ化するのかな・・・
そういえば夏も終わりだねぇ
367デフォルトの名無しさん:2009/08/29(土) 22:56:40
たしかに衝突判定は難しい。
俺も衝突判定については、何年も悩んで
試行錯誤を重ねた。
それで、ひとつの解に辿り着いた。
それは、全然難しくない、
むしろ簡単、至極基本的な方法だった。
悩んだ自分にむかつくので教えませんが。
368デフォルトの名無しさん:2009/08/29(土) 23:29:35
落ち穂拾いが少しできたし。
自分の知識の再確認をする機会にはなったかも。
369名無しさん@そうだ選挙に行こう:2009/08/30(日) 04:39:22
>>367
是非教えてください。
370名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:21:51
glBufferDataARB
glBufferData

などのようにARBが後ろに付くものとそうでなものがありますが、機能的に
違いがあるのですか?
371名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:22:41
ほとんどはない
一部引数とか違うものもあったはずだが、覚えてないや
サポートされてるOpenGLのバージョンやらなんやらによって
どちらか片方しか使えない場合があるので、
可搬性を考慮するなら両対応しておきたい
372名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:28:52
ARBは Architecture Review Board の略で、標準でない拡張機能的な意味合いを含んでいるから、
両方あって、特に拘る必要がなければARBが無い方を使っといた方がいんでね?
373名無しさん@そうだ選挙に行こう:2009/08/30(日) 15:43:38
「ARB」の拡張機能は次バージョンでの採用候補的な意味合いが強いから、
ARB→無印で仕様が変わることはほとんどないね。
374デフォルトの名無しさん:2009/08/31(月) 02:05:07
その拡張がサポートされているかどうか確認したうえで、ARB使った方が
サポートできるグラボが増えていいと思っているが、そんな単純ではないのか?
glBufferDataに対応していれば、glBufferDataARBにも対応しているはずだよね?
375デフォルトの名無しさん:2009/08/31(月) 08:11:31
ARBの方が関数名長いし、きっと早いんだろうなと思って使ってた俺アホだな
376デフォルトの名無しさん:2009/08/31(月) 08:19:58
サポートしたい最低のOpenGLバージョンを決めて、そのバージョンで標準化
しているものについてはARBやEXT取って使えばいいよ。でないとキリがない。

どの機能がどのバージョンでARB拡張になってどのバージョンで標準入りしたか
は一度整理しておくと良いけど。
377デフォルトの名無しさん:2009/08/31(月) 08:42:33
使いたいものがあれば動くしなきゃ動かないで十分じゃね
378デフォルトの名無しさん:2009/08/31(月) 17:00:41
ゲーム作ってるんだけど、シーンが変わったときに
glTexImage2DとかglNewList/glEndListなんかを
たくさん呼ぶのでそこで描画がもたつきます。
描画は止めたくないからglTexImage2Dとかだけ
描画とは別のスレッドで呼びたいんだけど、
エラーになってしまう。どうしたらいいのかな?
379デフォルトの名無しさん:2009/08/31(月) 17:47:03
古典的すぐるが一気に呼ばない
380デフォルトの名無しさん:2009/08/31(月) 19:16:22
>>379
もしたとえば1フレームに一枚テクスチャを作るとか決めると、
逆に余裕があるときにロードがどんどん早く進まなくてちょっと困るなあ……
そのへんうまく調節するように書いても、
複雑さが増すわりには根本的な解決にならないし。
普通の市販のゲームはどうやっているんだろう?
381デフォルトの名無しさん:2009/08/31(月) 19:19:18
NowLoading的な画面で予め確保すればいいんじゃないの
382デフォルトの名無しさん:2009/08/31(月) 19:28:51
NowLoading画面が静止画ならそれでOKなんだけど、
たとえば「NowLoading」の文字が点滅してたりすると
NowLoading画面の時も描画は止められないんです。
その点滅が不規則で、どうやらロードの合間に適当に描画を挟んで
ごまかしてるっぽいゲームもあるけど、
もっとしっかりしたアニメーションをするNowLoading画面を出してるゲームもあって、
どうやっているのかな、と。
383デフォルトの名無しさん:2009/08/31(月) 19:35:55
ファイルの読み込みと圧縮の展開だけ別スレッドでやって
glTexImage2Dだけメインスレッドでやれば軽いんじゃない
それか読み込み展開ルーチンそのものを細切れに動かせるように作るとか
384デフォルトの名無しさん:2009/08/31(月) 19:49:45
NowLoading 画面を別スレッドにすればw
昔は割り込みでアニメさせてたりしたなー
385デフォルトの名無しさん:2009/08/31(月) 20:09:38
>>glTexImage2Dだけメインスレッドで
手元のプログラムはまさにそれになってけど、ときどきもたつく。
glTexImage2D や glNewList を細切れに呼び出すとロードが遅くなるし、
何よりコードが煩雑になるのが嫌で……
静止画でNowLoadingが一番シンプルだけど、ユーザにフリーズか?と思われるかもだから、
プログレスバー的な意味でも何かアニメーションしたいな
シンプルで根本的な解決策はないということかな
386デフォルトの名無しさん:2009/08/31(月) 20:18:43
>>385
プログレスバーを出すだけならFPSを一定に保つ必要は無いし簡単でしょ。
実際PCのゲームだとそういうのが多い感じ。
387sage:2009/08/31(月) 20:21:18
glLoadIdentity()ってglPushMatrix()+glPopMatrix()のペアと
同じって考えていいの?

座標がどうなっているのか、本当に理解しにくい。
388デフォルトの名無しさん:2009/08/31(月) 20:31:00
>>387
だいぶちがうよ。
push/pop は変換行列の状態を保存しとくのだけど、
LoadIdentity は変換行列を単位行列にかえる。
popはpushしたときの状態に戻るのであって、いつも単位行列に戻るわけじゃないよ。
389デフォルトの名無しさん:2009/08/31(月) 20:56:49
>>386
以前やったゲームに、ロード画面で
キャラクターがCD-ROMを運ぶアニメーションをするのがあってさ。
ちゃんと一定のスピードで。そういうのがやってみたいんだ。
ロード画面ごときに、そこまで細かい演出しないゲームのほうが多いけど。
390デフォルトの名無しさん:2009/08/31(月) 21:38:17
>388
どうもです。
glLoadIdentity()呼んだ直後でglPushMatrix()
って無意味なんでつね。
やっと分かったような。
391デフォルトの名無しさん:2009/08/31(月) 21:42:31
んー、ホントに GL の関数が遅いの?
392デフォルトの名無しさん:2009/08/31(月) 21:54:41
>>390
無意味ってわけじゃないよ。単位行列を保存しておきたいのならLoadIdentityの次にPushMatrix使うよ。
例えばオブジェクトA, Bって順番で描画するときにAにだけ変換行列かけたい場合に
LoadIdentity
PushMatrix
オブジェクトA描画
PopMatrix
オブジェクトB描画
ってな感じに使える。
393デフォルトの名無しさん:2009/08/31(月) 21:55:57
オブジェクトA描画の前に「変換行列をかける」を忘れていた。
394デフォルトの名無しさん:2009/08/31(月) 22:45:30
>392
わかりやすいです、どうもありがとう!
395デフォルトの名無しさん:2009/09/01(火) 06:06:44
>>392
> オブジェクトA描画
LoadIdentity
> オブジェクトB描画

と等価だよな
396デフォルトの名無しさん:2009/09/01(火) 13:31:39
>395
ありがと。
今日OpenGLのばぐ取りしてたら、以前ここで質問したことその
まま忘れてて、今やっとデバッグできた。

ここに居る連中すごいね、俺が数日かけてデバッグするのを
ちょっとみて「そこ[3]じゃなくて[9]だ」って指摘してたしな。
397デフォルトの名無しさん:2009/09/01(火) 21:45:31
みんなきっと、似たような間違いを経験してるんだよw
398デフォルトの名無しさん:2009/09/02(水) 22:46:15
質問です
サイズ512*512の24bitbmpをテクスチャとして正方形のオブジェクトに貼ろうとしているのですがうまくいかず
真っ白(オブジェクトの色)になってしまいます
64*64〜256*256の画像ではうまくいきます

複数の枚数のテクスチャを読み込んで複数のオブジェクトに貼ろうとしているのですが
例えば512*512の画像と256*256の画像を二つのオブジェクトに貼ろうとした場合
最初に512*512の画像をgentextureして続けて256*256の画像を同じようにしてそれぞれ貼り付けると両方とも真っ白になります
しかし順番を逆(256*256の画像をgentextureしてから512*512の画像をgentextureする)にすると前者だけうまく貼れて後者は真っ白になります

サイズの制約も守っているので理由がよく分かりません
分かる方よろしくお願いします
399デフォルトの名無しさん:2009/09/02(水) 22:54:39
PS3薄型と旧型の違い

旧型PS3:
Linuxインストール機能内蔵でPS3をPCとして使うことができる。
PPC Linux用の無料のソフトがいっぱい動く。
また、Cellの開発ツールも無料で入手できるので自分でCellのプログラムを作って実行させることができる。
ドルビーTrueHD、DTS-HDMAはリニアPCM変換で対応。
HDD〜80G。実勢価格30000円程度

薄型PS3:
Linuxインストール機能は除去された。
ブラビアリンク機能でブラビアと連動した電源のON OFFができる。
ドルビーTrueHD、DTS-HDMAのビットストリーム出力対応。
HDD120G。低騒音・発熱・消費電力。実勢価格29980円
400デフォルトの名無しさん:2009/09/02(水) 22:54:54
>>398
一応、確認。
glBindTexture()したあと、
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
は指定してる?
あとグラボの種類は?
401デフォルトの名無しさん:2009/09/02(水) 23:17:02
>>400
parameteriによる指定はしてます

対象のPCが手元に無いので詳細は今分かりませんが
nVidiaの古めのグラボ(AGP接続だったはずなので)です
402デフォルトの名無しさん:2009/09/03(木) 22:32:48
>>400
すいません
確認してきましたが違いました

GIGABYTEから出てるGeForce6600搭載のビデオカード(PCIーE接続)でした
403デフォルトの名無しさん:2009/09/03(木) 22:34:42
>>400
>>401
先にCAD(blenderか何か)でモデリングしてテクスチャー貼っておいて、
それをOpenGLのほうで読み込むっていう手法をとらないの?
404デフォルトの名無しさん:2009/09/03(木) 23:45:47
カメラ行列からカメラのxyz角度出したいんだけど、
カメラ行列ってどうやって求めるんでしょう?
行列から角度もとめる関数は作ったものの肝心の行列がわからん。
参考サイトでもいいので教えてください。
405デフォルトの名無しさん:2009/09/03(木) 23:57:16
GetDoubleとかの関数でProjectionMatrix取得すればいい。でもカメラの角度ってことはModelviewMatrixか。
406デフォルトの名無しさん:2009/09/04(金) 01:24:56
>>403
少し自分のやりたいこととは違ってしまうので
上記のようにテクスチャ作って貼り付けたいです
なぜ512*512の画像だと読み込めないのか原因も分かりませんし・・・
407デフォルトの名無しさん:2009/09/04(金) 01:28:31
glGetError()でチェックしてるか?
408デフォルトの名無しさん:2009/09/04(金) 10:44:22
GL_MAX_TEXTURE_SIZEで問い合わせてみるかOpenGLExtensionViewerとかでサポートしてるテクスチャサイズを確認してみたら?
409デフォルトの名無しさん:2009/09/04(金) 11:59:51
画像を読み込むプログラムが間違ってんじゃないの?
ソースをupしないなら、あーじゃないのこーじゃないのってナゾナゾの域を出ないような
410デフォルトの名無しさん:2009/09/04(金) 22:05:08
GeForce6600でできないはずがない。

作成:glGenTextures、glBindTexture、glTexParameteri、glTexImage2D
描画:glBindTexture、glVertex*、glTexCoord*、(glDraw*)
411デフォルトの名無しさん:2009/09/04(金) 23:49:29
job:転職[レス削除]
http://qb5.2ch.net/test/read.cgi/saku/1184734722/259
saku:削除整理[レス削除]
http://qb5.2ch.net/test/read.cgi/saku/1240755818/163-164
412デフォルトの名無しさん:2009/09/05(土) 03:12:49
なんとなく、どこかでメモリ確保サイズを超えて読み込んでるとか、
glPixelStorei(GL_UNPACK_ALIGNMENT, -);
が間違ってるとか、そんな気がする。
413デフォルトの名無しさん:2009/09/05(土) 07:47:30
色を元に戻すのってglColorf(1.0, 1.0, 1.0, 1.0);使うしかないの?
glLoadIdentity();じゃ元通りにならないんだよね。orz
414デフォルトの名無しさん:2009/09/05(土) 08:32:09
glPushAttrib(GL_CURRENT_BIT)/glPopAttrib()
色だけなら現在値を記録しておいて戻したときにglColor呼び出しても良いと思うけど
415>>398 :2009/09/05(土) 13:08:28
>>409
ソースはここのプログラムのビットマップ読み込みの部分をそのまま使用しています
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();
読みにくくてすいません。他に示すべきところがあれば補足します
416デフォルトの名無しさん:2009/09/05(土) 13:27:28
俺の環境ではクランプモードについても毎回指定しないとテクスチャが表示されなかったこともあった。
417デフォルトの名無しさん:2009/09/05(土) 13:37:34
現在のレンダリングコンテキストが OpenGL 2.0 と互換性があることを「ステートから
判断」するにはどうしたらよいのでしょうか?

glGetString(GL_VERSION) で取得したバージョンのメジャー番号が 2 のときは互換性
があると思いますが、3 以上のときは Deprecated があるのでバージョン番号だけでは
判断できないと思うのですが。
418デフォルトの名無しさん:2009/09/05(土) 13:39:19
>>415
ビットマップは8bitと24bitだけじゃない。
SOILとか使うと楽できるよ。http://www.lonesock.net/soil.html
glTexParameteriとglTexEnvfの呼び出し方でグラボによって表示されないことがある。
419デフォルトの名無しさん:2009/09/05(土) 14:13:37
>>415
Loadが返す値tex1が0では無いことはチェックしてる?
420デフォルトの名無しさん:2009/09/05(土) 14:48:42
>>418-419
Loadが返す値は0になってました
やはりCBitmapに問題があるんでしょうか?
>>415のソースは何か問題ありますか?
使う画像は24ビットbmpと制約をかけて使用しています
421デフォルトの名無しさん:2009/09/05(土) 14:52:26
>>420
0025: int CBitmap::_CheckSize(unsigned int pict_size)
0026: {
0027: unsigned int i=2;
0028: const unsigned int TEX_SIZE = 256;
0029: unsigned int max_texture = TEX_SIZE*TEX_SIZE;
422デフォルトの名無しさん:2009/09/05(土) 14:58:49
そこらのサンプルはそのまま使わない。
サンプルが完璧だと思わない。
自作する気がなかったらライブラリと公開されていて、
みんなが動作確認してるものを使った方がいい。
423デフォルトの名無しさん:2009/09/05(土) 14:59:42
ライブラリとして
424デフォルトの名無しさん:2009/09/05(土) 15:09:49
>>421-422
手元に環境と実際に試してるプログラムが無いので
曖昧なのですがその辺りは変更したような気がします
月曜に確認してみます
もしダメでしたら再度質問します
ありがとうございました
425デフォルトの名無しさん:2009/09/05(土) 15:24:57
BMPくらい自分で作っちゃえば。
glTexSubImage2Dを使えば2のべき乗じゃないサイズも使えるよ。
426デフォルトの名無しさん:2009/09/05(土) 15:52:36
読み込むbmpファイルのファイル名が間違ってたりしてなw
最近プログラミングはできるけどデバッグはできない人って増えてきた気がする
427デフォルトの名無しさん:2009/09/05(土) 21:54:04
デバッグができないプログラム技量なんて意味ないもんな。
極論するとプログラムの技量は、どれだけデバッグ早くより完全にできるかの技量、と言える。
428デフォルトの名無しさん:2009/09/05(土) 21:55:06
なるほどぉ
429デフォルトの名無しさん:2009/09/05(土) 22:29:55
半分くらい同意。しかし一方で、バグを産まないプログラミングスタイルもあるからな。
430デフォルトの名無しさん:2009/09/06(日) 00:26:43
「どれだけ早くより完全にできるか」でいいんじゃね
最初からバグが混入しないようにするもよし、デバッグが早くなるように努力するもよし
431デフォルトの名無しさん:2009/09/06(日) 00:35:49
どうしててもいいけど、うまくいかなかったらデバッグしろって話。
手順A->Bがうまくいかなかったら、まずAだけをテストするとかそういうレベル
432デフォルトの名無しさん:2009/09/06(日) 00:40:24
なるほどなぁ
433デフォルトの名無しさん:2009/09/06(日) 02:31:14
>最近プログラミングはできるけどデバッグはできない人って増えてきた気がする

それはプログラミングできるって言って欲しくない。
プログラミングは正常に動作するまでデバッグの繰り返し。
プログラミングそのものがデバッグって考えてる人もいる。
できない人が増えてるのは、講義とか研究でプログラムを使う学生が増えたからじゃないかな。
434デフォルトの名無しさん:2009/09/06(日) 03:26:28
これはしたり
435デフォルトの名無しさん:2009/09/06(日) 03:40:19
関係無い話は他でやれ
436デフォルトの名無しさん:2009/09/06(日) 08:21:38
>>398-425もopenGL無関係だったわけだけどね
437デフォルトの名無しさん:2009/09/06(日) 22:37:53
>>414
ありがとう!
色のリセットは、やっぱりglColor(1, 1, 1, 1);
がよさそうですね。
438デフォルトの名無しさん:2009/09/07(月) 03:01:50
テクスチャにアタッチしたFBOを使いたいのですが、どうもうまく使えません。
下記のコードで変なところがないか指摘していただけるとありがたいです。

// 初期化部
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(1, &fbo_texture);
glBindTexture(GL_TEXTURE_2D, fbo_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE_EXT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE_EXT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);

glGenFramebuffersEXT(1, &fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, fbo_texture, 0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

// 初期化部ここまで
439デフォルトの名無しさん:2009/09/07(月) 03:02:49
>>438 のつづき

// テクスチャへの描画部
glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity();
glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity();
glPushAttrib(GL_VIEWPORT_BIT);

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
glViewport(0, 0, 256, 256);
glMatrixMode(GL_PROJECTION); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW); gluLookAt(0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glColor4f(0.0f, 0.0f, 0.0f, 0.0f);
glBegin(GL_LINES);
glVertex3f(-100.0f, -100.0f, -100.0f);
glVertex3f(100.0f, 100.0f, 100.0f);
glEnd();
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

glMatrixMode(GL_MODELVIEW); glPopMatrix();
glMatrixMode(GL_PROJECTION); glPopMatrix();
glPopAttrib();

// ここまで
440デフォルトの名無しさん:2009/09/07(月) 03:04:01
エラーくらいチェックしろよ
441デフォルトの名無しさん:2009/09/07(月) 03:06:57
>>439 のつづき

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, fbo_texture);
glColor4f(1.0f, 1.0f, 1.0f, 0.5f);
glBegin(GL_TRIANGLE_STRIP);
glVertex2f(0, 0);
glVertex2f(0, 1);
glVertex2f(1, 0);
glVertex2f(1, 1);
glEnd();
glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_TEXTURE_2D);

FBOテクスチャにレンダリングしたときのglClearColor(1,1,1,1)の色は
ここで反映されているんですが、描いたはずの直線が表示されません。
glClearColorを赤にすれば赤の四角が描画されるので、FBO自体は使えているようなのですが・・・。
442439:2009/09/07(月) 03:08:16
>>440
エラーチャックというとまずは
glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)でしょうか。
これは大丈夫でした。
443デフォルトの名無しさん:2009/09/07(月) 03:15:23
UVドコー
444439:2009/09/07(月) 03:22:27
>>443
うぉ!!ないっ!
今すぐ確かめてみます。
445439:2009/09/07(月) 03:30:11
興奮して連投になってすみません…。
テクスチャ座標を指定したら正しく描画できました。

土日苦しんだ悩みが解決しました。
初歩的過ぎてすみませんでした。本当にありがとう!
446デフォルトの名無しさん:2009/09/07(月) 11:42:30
これはこれは……
447デフォルトの名無しさん:2009/09/07(月) 12:09:21
glTexImage2D() の最後の引数 data に NULL を与えてもテクスチャオブジェクトを
生成することができますが、glCompressedTexImage2D() の最後の引数に NULL を与
えた時も同じようにテクスチャオブジェクトを生成することはできるでしょうか?
448デフォルトの名無しさん:2009/09/07(月) 17:52:08
お聞きしたいのですが、
void display(int color[][3]){
int i,j,k=0;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
for(j=0;j<250;j++){
for(i=0;i<250;i++){
glColor3d(color[k][0], color[k][1], color[k][2]);
glVertex2d(i,j);
k++;
}
}
glEnd();
glFlush();
}

main(){
int color[250*250][3];

glutDisplayFunc(display(color));

}
と、同ウインドウ上にmainで指定した異なる色で点を描画したいのですが、
glutDisplayFunc(display(color))の引数が少ないといわれます。
解決策はありますか?
449448:2009/09/07(月) 17:55:05
連投すみません。mainは
main(int argc, char *argv[])
です。
450デフォルトの名無しさん:2009/09/07(月) 17:59:18
グローバル変数で渡す
451デフォルトの名無しさん:2009/09/07(月) 18:29:12
>>448
ここはコンパイルエラーの解決方法を聞く所ではない。
452デフォルトの名無しさん:2009/09/07(月) 18:44:25
>448
そのレベルでやってるのか

>450
的確すぎる
453デフォルトの名無しさん:2009/09/07(月) 18:55:02
ワロタ
int g_color[250*250][3];
...
void display(void) {
 int (*color)[3] = g_color;
...
}

main() {
...
 glutDisplayFunc(display);
...
}
こんなのだろ
454448:2009/09/08(火) 13:18:13
>>450 >>453 ありがとうございました
>>451 失礼しました
455デフォルトの名無しさん:2009/09/08(火) 19:40:06
今フライトシムみたいなの作ってるんだけど、自然な雲を描きたい。
背景に描くんじゃなくて、機体がちゃんと後ろに回り込めるようなモノ。
ビルボードとかだと後ろに回っても同じ絵だから変だし、

ttp://homepage3.nifty.com/ysflight/aircraftsoft/ss_ysflight/t4blue.png

みたいな白いカタマリはあんまりだ……
輪郭がぼやけた雲を描ける上手い方法解説したサイトとかないかな?
とりあえず固定パイプラインのみで。
456デフォルトの名無しさん:2009/09/08(火) 20:10:59
ttp://game.watch.impress.co.jp/docs/20051207/3dwa.htm
■ “光る小技”の疑似ボリュームパーティクルと疑似光散乱
を参照
457デフォルトの名無しさん:2009/09/08(火) 20:12:00
458デフォルトの名無しさん:2009/09/08(火) 21:38:32
>>456, 457
そのへんのページ読んでみたら何となくわかってきたかも……
いわゆるパーティクルというやつで
ちいさいスプライトをたくさん描けばいいわけだな?
ちょっと実装してみるよ。実用に足る速度になるかわかんないけど
ありがと
459デフォルトの名無しさん:2009/09/12(土) 00:00:14
質問していいですか。
平行投影と透視投影を切り替えたいのですが、一度透視投影にした後は、
平行投影に戻せなくなります。
glMatrixMode(GL_PROJECTION)して、glFrustumすると何らかのパラメータが
設定されてしまうからと思ってますが。
460デフォルトの名無しさん:2009/09/12(土) 00:12:39
glFrustum, glOrtho する前にちゃんと glLoadIdentity してる?
461デフォルトの名無しさん:2009/09/12(土) 00:30:29
直前にしてます
462デフォルトの名無しさん:2009/09/12(土) 00:35:45
glGetErrorでエラーチェックしろ
問題が再現する最小限のコードを張るなりどこかにアップロードしてリンクしろ
463デフォルトの名無しさん:2009/09/12(土) 01:05:34
すみません、いま実験で取り込んでて、今晩中か明日くらいにうpします;
464デフォルトの名無しさん:2009/09/12(土) 01:28:46
意外とさくっと再現できました。
ttp://www.dotup.org/uploda/www.dotup.org131192.cpp.html
pass:gl
です。Enterキーを押して、平行投影と切り替えたいのですが。
465デフォルトの名無しさん:2009/09/12(土) 01:35:04
モデルビュー行列にglOrthoやってるぞ。
466デフォルトの名無しさん:2009/09/12(土) 01:43:42
アホすぎるだろ
467デフォルトの名無しさん:2009/09/12(土) 02:51:16
ありがとう。
なるほど、glOrthoやるときはGL_PROJECTIONしてからやる必要あるのね。
glOrtho使ったことなかったから知らなかったわ;
468デフォルトの名無しさん:2009/09/12(土) 02:54:09
void display(void)
{
 glClear(GL_COLOR_BUFFER_BIT);
 glLoadIdentity();
 gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
 glMultMatrixd(rot);



void resize(int w, int h)
{
 glViewport(0, 0, width = w, height = h);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 if(mode == 1) {
  gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0);
 } else {
  glOrtho(-2.0, 2.0, -2.0, 2.0, 0.0, 10.0);
 }
 glMatrixMode(GL_MODELVIEW);
}

で解決しました。ありがとうございます。
469デフォルトの名無しさん:2009/09/12(土) 12:32:28
>>467
そういう問題じゃないだろうw
プロジェクション行列を設定するならGL_PROJECTIONを指定しなさい。
glFrustumもglOrthoも、プロジェクション行列を生成する命令。OK?
470デフォルトの名無しさん:2009/09/12(土) 13:15:49
初心者にはProjとModvの意味が分からんからな。俺もそうだった
471デフォルトの名無しさん:2009/09/12(土) 13:38:31
GLの、この読み出してんだか書き込んでんだか
見た目わかりにくいライブラリがすべて悪い
472デフォルトの名無しさん:2009/09/12(土) 15:02:11
低レベルな質問ばかりだな。せめて赤本には目を通せよ
473デフォルトの名無しさん:2009/09/12(土) 17:26:33
俺はシャドウマッピングを初めて試したときに、OpenGLの行列まわりの理解が曖昧だったのがしっかりしたな。
474デフォルトの名無しさん:2009/09/12(土) 17:29:54
独り言はチラシの裏にでも書いといてね。
475デフォルトの名無しさん:2009/09/12(土) 21:16:07
>>472
>せめて赤本には

皆さんって赤本は必携なの?
ネット上に赤本の初版が公開されてますが、あれではだめ?

もすこし手軽な入門書を紹介していただけませんか。
476デフォルトの名無しさん:2009/09/12(土) 21:22:51
OpenGLをやりたい

手軽に覚えたい

相反する願望です。

てか赤本も腰据えて読めば手軽に感じるよ。
477デフォルトの名無しさん:2009/09/12(土) 21:24:41
「OpenGLの神髄」でさらりと全体を概観してから赤本に進むのがいいんじゃないの。
これからはじめるなら。
478デフォルトの名無しさん:2009/09/12(土) 21:31:51
>>475
OpenGLの概要を理解するのに赤本が一番手っ取り早い。
読むにあたって敷居が高くもないと思うが。ウェブに置いてあるのは
OpenGL 1.1対応版だが、それで基本は押さえられるからいいよ。
第5章まで読んで、あとは必要に応じてで十分。
シェーダー関連は赤本だけじゃ足りないが。
479デフォルトの名無しさん:2009/09/12(土) 21:35:06
必携だとは言わないけど赤本の内容ぐらいは理解しているべき

これから始めるならって事なら、固定機能パイプライン弄るだけの古いOpenGLの使い方覚えてもしょうがないと思うなあ
480デフォルトの名無しさん:2009/09/12(土) 22:01:35
ここに来る初心者の大半が固定パイプラインを使っているという事実
481デフォルトの名無しさん:2009/09/12(土) 22:24:16
固定機能を排除するにしても、固定機能の代替となるようもう一段ミドルウェアをかまさないとつらいからな
482デフォルトの名無しさん:2009/09/12(土) 23:35:21
正直固定機能いらない・・・
一度3.0前方互換使うとあんなにデバッグしにくい代物使う気無くすよ。
483デフォルトの名無しさん:2009/09/13(日) 00:11:35
シェーダーで固定機能のエミュレーターを書くのが辛すぎるのがなぁ
分岐の解決がコンパイル時かシェーダー内かって極端なんだよ
drawした時点で条件分岐を解決して命令をフラットに並べるというようなものが欲しい
484デフォルトの名無しさん:2009/09/13(日) 02:17:22
visual studioを使ってopenGLを使いたいのですが、
どこでダウンロードできるのでしょうか?
ググってたら1日が終わってしまいした・・・
485デフォルトの名無しさん:2009/09/13(日) 02:35:16
windows sdk
486デフォルトの名無しさん:2009/09/13(日) 08:48:12
475ですだ。
みんなありがとう、赤本ってエロ本と同じくらい大切なんでつね!

でも、みんなレベルが高すぎて結局シェイダーの話とか
パイプラインの話とかになってしまうんでつね・・・・
487デフォルトの名無しさん:2009/09/13(日) 12:21:55
このスレでいいのかわからないけど、質問です。
四元数でつくった関節の可動域を制限したい場合、どんな計算をしたらよいでしょう?
488デフォルトの名無しさん:2009/09/13(日) 12:25:16
>>487
3Dグラフィックスプログラミング
http://pc12.2ch.net/test/read.cgi/tech/1155153009/l50
3Dアルゴリズム全般
http://pc12.2ch.net/test/read.cgi/tech/1164171086/l50
489デフォルトの名無しさん:2009/09/16(水) 19:53:23
だれか赤本じゃなくてスーパーバイブル(水色)読んだ人っていませんか。

http://www.amazon.co.jp/OpenGL-SuperBible-Comprehensive-Tutorial-Reference/dp/0321498828/ref=sr_1_1?ie=UTF8&s=english-books&qid=1253098287&sr=8-1

かなり評価高いみたいなんだけど、日本語はないんだよね。
490デフォルトの名無しさん:2009/09/16(水) 21:21:10
人柱頼んだ
491デフォルトの名無しさん:2009/09/17(木) 22:22:58
赤本って2chでは人気あるけど、アマゾンでは(米国でも)
最低の評価。
492デフォルトの名無しさん:2009/09/17(木) 22:41:15
最低じゃないじゃん。amazon.co.jpでの評価5じゃん。
amazon.comでは最近のは評価が低いな。昔の(1.4とか)は評価高いが。
493デフォルトの名無しさん:2009/09/17(木) 23:11:12
OpenGL3.0対応を謳ってはいるがそれについての内容が微妙ってのが原因だったような。
前調べたときの印象だから今は知らんが。
494デフォルトの名無しさん:2009/09/18(金) 13:37:26
>>489のOpenGLスーパーバイブルは何か、ここでは誰も読んでないんでつか・・・

そーでつかぁ・・・
495デフォルトの名無しさん:2009/09/18(金) 13:52:40
>>493
著者がOpenGL3.xのdeprecation modelに批判的だからな。
今年のSIGGRAPHで見かけたから聞いてみたらそんなこと言ってた。
まあ基本を押さえれば後はクイックリファレンス見る程度で十分だとは思う。
496デフォルトの名無しさん:2009/09/18(金) 21:22:29
本屋で見たけど窓環境依存の説明が多くて、こりゃ要らんわと思った
窓以外の環境で使ってる人にはお勧めできない
497デフォルトの名無しさん:2009/09/19(土) 02:20:09
Linux 用のも大きい本屋で見たことアルよ.

あと Android 本とかが OpenGL ES を使って携帯で 3D やってる:

http://pragprog.com/titles/eband/hello-android

498デフォルトの名無しさん:2009/09/19(土) 10:31:47
ESならそれ用の本が別にあるだろ
499デフォルトの名無しさん:2009/09/19(土) 10:36:03
>>498
> ESならそれ用の本が別にあるだろ

たとえば?
500デフォルトの名無しさん:2009/09/19(土) 10:45:34
501デフォルトの名無しさん:2009/09/19(土) 13:47:29
>>500
それ、プレステ開発用のOpenGLバージョン1.1じゃなくて、2.0の説明
なんだよな。

赤本に文句付けるとすれば、やっぱどこ?
俺はESの説明箇所が少な杉だってことだけど、2ch代表して苦情
出しとこか。
502デフォルトの名無しさん:2009/09/19(土) 13:53:41
こいつ恥ずかしすぎる
503デフォルトの名無しさん:2009/09/19(土) 20:29:51
>>500は阿呆の2ch代表
504デフォルトの名無しさん:2009/09/19(土) 20:55:22
間違えた。
>>501は阿呆の2ch代表

500ごめん
505デフォルトの名無しさん:2009/09/20(日) 23:44:03
Quadro FX 1300とQuadro FX 370だとどっちが高性能か教えてくれんか?
506デフォルトの名無しさん:2009/09/21(月) 11:53:22
スレ違い
507デフォルトの名無しさん:2009/09/21(月) 23:16:46
Mac でカラー指標モード動かすこと可能?
508デフォルトの名無しさん:2009/09/22(火) 20:29:03
>>502-504

やめとけ、京大院生だぞ、相手は。お前等にゃちと倒せんよw
509デフォルトの名無しさん:2009/09/22(火) 20:41:40
なんというか・・・本気だろうが冗談だろうが、
相当に頭の悪いというか、よくもまあそんな幼稚な発言を平気で出来るなあ・・・。
こんな馬鹿なレスされたら、逆に笑えないな・・・。
510デフォルトの名無しさん:2009/09/22(火) 21:21:46
ここ、そういうの多いから気にしてたらダメよ
511デフォルトの名無しさん:2009/09/23(水) 09:27:34
まっとうな京大院生なら、苦情出す前に自分で本書きはじめるだろ。
512デフォルトの名無しさん:2009/09/23(水) 11:16:42
glVertexPointerにはvoid*型で渡すようになってますが
APIではどうやって渡されるポインタをheadとする列の終端を探知してるんですかね?
座標の数、それを表す型(のサイズ)、ストライドだけじゃ
もう一つそのポインタで表現されている列に含まれる頂点の数ってのが判ってないと
終端がわからずに範囲外までいっちゃうと思うんですが
513デフォルトの名無しさん:2009/09/23(水) 11:32:08
別に終端を探知したりしない
glDrawArrayやglDrawElementsに渡したインデックスが範囲外だったら、素直に範囲外まで行って落ちちゃう
514512:2009/09/23(水) 16:28:09
>>513
なるほど、探知しないんですね
かなり勘違いしてたようです
解答ありがとうございました
515デフォルトの名無しさん:2009/09/23(水) 17:05:55
KMCってまだあんのか?
516デフォルトの名無しさん:2009/09/24(木) 16:13:45
すご〜く初歩的な質問なのですが
glutMainLoop()以外のOpenGLの関数をmain関数以外で呼び出したら
再描画ができなくなるとか、そういったものはあるのでしょうか?
517デフォルトの名無しさん:2009/09/24(木) 16:51:29
特にないはず
ただし glutCreateWindow を呼ぶより前には呼べない (まだウィンドウがないから)
あと、全然別の場所で呼んだ OpenGL の関数が、画面の描画時に影響を与えてしまうことはありうる
例えば、どこかで glColorMask を設定して元に戻すのを忘れてたら、glClear を呼んでも画面がクリアされない、とか
518デフォルトの名無しさん:2009/09/24(木) 16:53:42
glutMainLoop()はglutライブラリの関数であってopenGLの関数ではない
glutInit() glutCreateWindow()あたりはそう気軽に呼ばないほうがいいかもね

openGLの関数ならmain()以外で何を呼ぼうがおおむね問題なし
(glBegin()だけを呼んでglEnd()を呼ばないのはダメとか例外はある)
519デフォルトの名無しさん:2009/09/24(木) 19:02:44
C++なのですが
コールバック関数で指定する関数は静的じゃないとだめなようなのですが
クラスの非静的なメンバ関数を指定する手段なんてないですよね・・・?
520デフォルトの名無しさん:2009/09/24(木) 19:04:04
インスタンスが無いからだろ
521デフォルトの名無しさん:2009/09/24(木) 20:13:51
freeglut
glutGetWindowData
というお約束
522デフォルトの名無しさん:2009/09/24(木) 20:44:40
>>519
大抵コールバック関数はユーザが任意でvoid*を渡せるだろ。
それにクラスのインスタンスのポインタを渡して使えばいい。
523デフォルトの名無しさん:2009/09/26(土) 11:41:16
GtkGLextmmは開発が止まっているのかな?
Linuxでは何を使うのがメジャーなのか教えていただけませんか?
524デフォルトの名無しさん:2009/09/26(土) 14:36:34
メジャーかは知らないがOpenTKとかもあるね。
525デフォルトの名無しさん:2009/09/26(土) 16:19:16
最近OpenGL3.0以降の勉強をしようと思いまして、シェーダーを学び始めました。そこで立方体(-1, -1, -1 から 1, 1, 1)を描画し、y座標の高さを変数とした矩形関数に応じて色を変化させる(要するに縞々)ようにシェーダーを書きました。
バーテックスシェーダーを
#version 130
in vec3 position;
uniform mat4 projectionMatrix;
uniform mat4 modelviewMatrix;

out float y;

void main(void)
{
y = position.y;
gl_Position = projectionMatrix * modelviewMatrix * vec4(position, 1.0);
}

フラグメントシェーダーを
#version 130
out vec4 out_FragColor;
in float y;
const vec3 c1 = vec3(1.0, 1.0, 1.0);
const vec3 c2 = vec3(0.25, 0.25, 0.25);

void main(void)
{
float a = step(0.5, fract(y));
out_FragColor = vec4(mix(c2, c1, a), 1.0);
}

このように書いたところ、y = 1の面が正しく描画されず、FSで指定したc1とc2の色それぞれを含んだ砂嵐状態になってしまいます。他の5面は正しく描画されています。
http://kissho.xii.jp/1/src/1jyou92248.png
面の描画順を変えてみたりしてもy = 1の面が毎回おかしくなっています。GLSLはまだ扱い始めたばかりで、今回は自分だけでは間違いを発見することができませんでした。
何かおかしな点、助言などがありましたらよろしくお願いいたします。
526デフォルトの名無しさん:2009/09/26(土) 17:00:39
varying float y;

void main(void)
{
y = gl_Vertex.y;
gl_Position = ftransform();
}


varying float y;
const vec3 c1 = vec3(1.0, 1.0, 1.0);
const vec3 c2 = vec3(0.25, 0.25, 0.25);

void main(void)
{
float a = step(0.5, fract(y));
gl_FragColor = vec4(mix(c2, c1, a), 1.0);
}

で良いか?
527デフォルトの名無しさん:2009/09/26(土) 17:08:27
>>526
OpenGL3.0より前だとそういうことになりますね。
528デフォルトの名無しさん:2009/09/26(土) 17:45:22
varing変数の誤差じゃね。1.0と0.9999は違う色にしてるわけだから
解決策はよくわかんない。うまく丸めればいいんだろうけど、とりあえず
float a = step(0.5, fract(y-0.00001));
とか?
529デフォルトの名無しさん:2009/09/26(土) 17:49:16
>>528
おっしゃる通りvarying(in)の誤差だったようです。-0.00001のオフセットを加えたら直りました。
本当にありがとうございました。
530デフォルトの名無しさん:2009/09/26(土) 19:07:02
>>524
OpenTKですか、ググってみます
有り難うございます
531デフォルトの名無しさん:2009/09/27(日) 05:38:16
浮動小数点の演算誤差の部分もあろうし、
あとは丸め込みの規則がボードによってバラバラなんだよね。
偶数丸めや四捨五入で統一されているわけではない。
固定機能の色の計算では苦しませてもらいました。
532デフォルトの名無しさん:2009/09/29(火) 15:21:07
スレ違いかもしれないけど、
同じテクスチャ(模様入り)を違和感なく繋げてマッピングする方法ってあります?
色の違いで境界線が見えるようなことが無いようにしたいのですが。
533デフォルトの名無しさん:2009/09/29(火) 19:46:08
シームレス photoshopでぐぐるのだ
534デフォルトの名無しさん:2009/09/29(火) 22:26:41
ついでにここも見とくといいことあるかもね
ttp://blogs.msdn.com/ito/archive/2008/03/21/photo-to-texture.aspx
535532:2009/09/30(水) 15:37:15
>>533,534
教えていただいてありがとう。
だけどソフトを使わずにプログラムで出来ないものでしょうか。
536デフォルトの名無しさん:2009/09/30(水) 17:45:23
[左右反転][元のテクスチャ]
[左右上下反転][上下反転]

パターンがあるテクスチャなら
こうすれば目立たなくなるんじゃない?
レンダーステート少々いじるだけで出来そうだし
コストもゼロだ
537デフォルトの名無しさん:2009/09/30(水) 18:31:52
glTexParameteri() で GL_TEXTURE_WRAP_S と GL_TEXTURE_WRAP_T に
GL_MIRRORED_REPEAT を指定するというのはどうでしょうか.
幾何学的には必ずしも連続しませんけど,色はつながります.

ttp://www.opengl.org/sdk/docs/man/xhtml/glTexParameter.xml
538デフォルトの名無しさん:2009/09/30(水) 19:47:45
コストをかけていいならワンのタイル(絨毯)とかか
ttp://www.t-pot.com/program/120_Wang/index.html
これで繰り返し可能な大きなテクスチャを事前に作っておくという方法もあるかも
539デフォルトの名無しさん:2009/09/30(水) 20:16:52
>>522
ググってたらこんな方法を見つけたのですが
ttp://paulsolt.com/2009/07/openglglut-classes-oop-and-problems/

これよりスマートな方法はないんでしょうかね
540532&535:2009/09/30(水) 20:54:03
>>536,537,538
いろいろな方法ありがとう。試してみます。
541デフォルトの名無しさん:2009/09/30(水) 21:00:11
>>539
C++ デレゲート(もしくはデリゲート)でぐぐってみろ。お前さんの探してる答えが見つかる。
542デフォルトの名無しさん:2009/10/02(金) 11:33:56
すみません、教えていただきたい事があるのですが、
GLSLを使用すれば、BlenderやLightWaveで作成した3Dモデルを
プログラム上で制御できるようになりますか?
543デフォルトの名無しさん:2009/10/02(金) 11:44:31
いいえ
GLSLはモデルを制御しません
544デフォルトの名無しさん:2009/10/02(金) 13:26:49
>>543
ありがとうございます。
作った3DグラフィックをOpenGLのソースに落とせるソフト、
または、3Dソフトで作成したものをOpenGLのソースに落とす為に
橋渡しをするツール等あれば教えていただきたいです。
545デフォルトの名無しさん:2009/10/02(金) 15:34:02
openGLを用いたソースは「プログラム」です。3Dソフトで作成したものは「データ」です
データとプログラムを橋渡しをするのはプログラマーやシステムエンジニアの仕事です
お金を沢山用意してご相談ください
546デフォルトの名無しさん:2009/10/02(金) 16:18:56
>>545
自動で変換できるようなものは無いのですね。
ありがとうございました。
547デフォルトの名無しさん:2009/10/02(金) 20:49:05
初歩的なことかもしれませんが質問です。
複数のビューポートを設定した時にそれぞれの背景色を変えるにはどうすればいいですか?
548デフォルトの名無しさん:2009/10/02(金) 21:35:29
glViewport(x, y, w, h);
glScissor(x, y, w, h);
glEnable(GL_SCISSOR_TEST);
glClearColor(r, g, b, a);
glClear(GL_COLOR_BUFFER_BIT);
glDisable(GL_SCISSOR_TEST);
549デフォルトの名無しさん:2009/10/02(金) 22:02:08
>>548
ありがとうございます!
おかげさまで無事に解決できました。
Scissorってのを使えば良かったんですね。
550デフォルトの名無しさん:2009/10/02(金) 22:49:36
>>545
でもモデルビュアーでOpenGLコマンドでセーブできるオプションがあってもいいよね。
あってどーすんだという気もするが、多分存在しない。
551デフォルトの名無しさん:2009/10/02(金) 22:56:54
名前は忘れたが、OpenGLのdllをすり替えて頂点データを抽出するソフトならあった気がする
552デフォルトの名無しさん:2009/10/02(金) 23:03:54
>>551
それは>>544がやりたいことと全然関係ない気がする
553デフォルトの名無しさん:2009/10/02(金) 23:39:24
>>550
Deep Exploration なら、各種3Dモデルフォーマットの他に
C言語ソースで保存することもできるよ。
表示するソースまで吐いてくれた気もするけど、ちょっと忘れた。
554デフォルトの名無しさん:2009/10/02(金) 23:40:48
>>553
書き忘れた。えっと確かOpenGLで表示してくれるソースだった気がする。
今度気が向いたら確認してみるー。
555デフォルトの名無しさん:2009/10/05(月) 10:13:45
名前の左、でした
556553:2009/10/06(火) 12:22:44
>>550
確認しますた。DeepExplorationはOpenGLで表示する.cpp吐いてくれます。
というか、モデルを表示するDLを返してくれる関数を出力してくれます。
557デフォルトの名無しさん:2009/10/06(火) 19:26:15
>>556
オプションで、WinMainを含んだ完全なWindowsアプリケーションのソースも吐けるよ。
あえてGLUTは使っていないようで、ちょっと読みにくいソースだけど。
558デフォルトの名無しさん:2009/10/06(火) 23:22:22
まじか。これは始めて知った。
世の中広いな
559デフォルトの名無しさん:2009/10/06(火) 23:29:51
そら間寛平でも2年以上かかるぐらいだからな
560デフォルトの名無しさん:2009/10/06(火) 23:31:31
そんなの使う人いるのかな。
頂点データじゃなくて、頂点を計算で求めてくれるなら面白いけど。
561デフォルトの名無しさん:2009/10/09(金) 18:56:09
Mac OS Xなのですが
GLUT_KEY_UPやGLUT_KEY_DOWNなどは
Apple Keyboardではどのキーが割り当てられているのでしょうか
562デフォルトの名無しさん:2009/10/09(金) 19:34:51
それkeyじゃないだろ。
563デフォルトの名無しさん:2009/10/10(土) 09:55:53
初心者です。
オブジェクトの回転についてお聞きしたいことがあります。
glRotateを使用してオブジェクトを回転させたいのですが、オブジェクトの
ローカル座標系を基準として回転させるには具体的に何をすれば良いのでし
ょうか?
凄く簡単な様ですが、妙に嵌っています。一本の棒をピッチ方向に45度回転
させた後に、その棒のローカル座標系を基準としてロール方向に45度回転さ
せるというものなのですが、グローバル(ワールド)座標系で回転している
様です。
参考となりますURLでも差し支え御座いませんので、どなたかお教えください。
564デフォルトの名無しさん:2009/10/10(土) 10:28:44
>>563
OpenGLにはワールド座標とローカル座標の区別はないけど、それはこの際ややこしくなるから置いておくとして。
多分今は回転を
glRotate(45, 1, 0, 0);//ピッチ
glRotate(45, 0, 0, 1);//ロール
DrawObject//オブジェクトの描画

ってやってるんだと思うけど、このピッチ回転ロール回転の順序を逆にしてみたらどう?
OpenGLは回転とか移動とかした際に、オブジェクトが持つ座標も一緒に変換を受けていると考えたらわかりやすいよ。
565デフォルトの名無しさん:2009/10/10(土) 11:13:36
>>564
早速の返答、有難う御座います。
多分、そのややこしくなる所が“肝”だと思っています。
アドバイス頂きましたピッチ回転とロール回転の順序を逆にしてしまい
ますと、向きが修正前と変わってしまい、都合が悪いです。
挙動を見ますと最後に記述したglRotateの成分方向のみについては、オ
ブジェクトの座標系通りに回転するのですが、その前に記述した別の成
分方向についてはオブジェクトの座標系通りには回転してくれません。
これから、glMultMatrixを使用してトライしてみます。
566デフォルトの名無しさん:2009/10/10(土) 11:58:20
>>565
出来れば目的の回転をかけた前後の、立体的形状がわかる三面図的なものがあれば、解決が早くなるかもしれない。
あとその回転かけてる部分のソースとかね。
567デフォルトの名無しさん:2009/10/10(土) 11:59:07
glMultMatrixとか使わなくてもできると思うが説明がめんどくさい。

基本的には下のような流れだ。

glTlanslate(ホニャ〜// 移動が最初
glRotate(ホニャ〜 // 回転は描画前
// 以下描画
glBegin(ホニャ〜
glVertex(ホニャ〜
:
glEnd(ホニャ〜

実際の変換と記述が逆になるので、動きを追う時は描画部分→回転→移動 と下から上に考えた方が分り易い。(ここでの回転をワールド座標系位置での回転と考える)
568デフォルトの名無しさん:2009/10/10(土) 12:48:46
「ややこしくなる所」が肝じゃない事だけは確かだな
569デフォルトの名無しさん:2009/10/10(土) 13:19:55
>>563
よく分からないがローカル座標系で回転するクォータニオンを合成する
とかかな?それをglRotateに与えてやればいい気がする
570デフォルトの名無しさん:2009/10/10(土) 20:41:38
gluLookAtで指定する引数からクォータニオンを計算できませんか?
仮にカメラの位置をE、物体の見る位置をV、カメラの上方向ベクトルをUとすると
VEで出来るベクトルとUの外積で回転軸が求まり
(0,0,1)とVEで出来るベクトルの内積から回転角度が求まると思ったのですが
計算がどうも合いません
質問する板が違いましたら誘導をお願い致します。
571デフォルトの名無しさん:2009/10/10(土) 20:47:31
そもそも何をしたいのかがよくわからん
572デフォルトの名無しさん:2009/10/10(土) 21:05:08
>>571
OpenGLを使ったデータビューワーを作っているのですが、
同時にOpenGLを使わない時の表示も行ってます。
その時にクォータニオンが必要でクォータニオンからgluLookAtは
出来るのですが、gluLookAtの引数が分かっている時のクォータニオンも
必要なのです。(出来ると思うのですがどうも上手く行きません)
573デフォルトの名無しさん:2009/10/10(土) 21:21:32
何の角度を求めたいのかよくわからんが、オイラー角とクォータニオンの相互変換なら
それようのライブラリがどっかに転がってるから、素直にそれ使っときなさい。
574デフォルトの名無しさん:2009/10/10(土) 21:45:10
OpenGL使わない用のコードがあってちゃんと動いてるんなら、
そっちで計算した行列をglLoadMatrixで設定すれば済む話なんじゃない?
gluLookAt使わずに
575デフォルトの名無しさん: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?
576デフォルトの名無しさん:2009/10/11(日) 17:50:33
お尋ねしますが、
テクスチャマッピングのときにjpg画像ってあまり使われないのですか?
違う形式に変換してる例ばかりなのですが、jpgでやりたい場合はどうすれば良いのでしょうか
577デフォルトの名無しさん:2009/10/11(日) 17:57:47
どうするもなにもメモリに読み込んじゃえば、あとは同じでしょ。
メモリに読み込む方法は、jpgのフォーマットに合わせて手作りするか、
どっかに転がってるライブラリでも使っときなさい。
578デフォルトの名無しさん:2009/10/11(日) 19:04:18
展開して読み込むから圧縮しても使用メモリは変わらないよね。
579デフォルトの名無しさん:2009/10/11(日) 20:02:16
>>575
やっぱりどのような回転を行いたいのかを図示なりしてくれないとアドバイスもしにくいよ。
それよりもクォータニオン使えば、思い通りの回転を加えられると思うんだけどなぁ。

>>576
OpenGLではjpgだろうが、pngだろうがプログラムで読みこんで配列に格納したあとに転送するからOpenGLで直接圧縮ファイルを扱うことはできないよ。
580デフォルトの名無しさん:2009/10/11(日) 20:14:43
寺西さんとこにjpg使うサンプルあるからそれ参考にすればいい
581デフォルトの名無しさん:2009/10/11(日) 22:14:40
OpenGLで日本語を描画する高速なライブラリないか?
ビットマップでいいんだが自作するしかないか・・・
582デフォルトの名無しさん:2009/10/11(日) 22:19:20
そういや画像フォーマットスレ無いのかなあ。
583デフォルトの名無しさん:2009/10/11(日) 23:38:17
>>579
申し訳御座いませんでした。
イメージを図示しました。
http://imepita.jp/20091011/843830

3本の矢印からなるオブジェクトがあるとしまして、直前の姿勢の1つの軸を
基準に回転させ、回転終了後に再度別の軸を基準に回転させていくというも
のです。
なお、回転軸の選択と回転角度は別途GUIより与える形です。

アドバイスをお願いいたします。
584デフォルトの名無しさん:2009/10/12(月) 00:06:29
>>583
RGBの順番にXYZと解釈させてもらうと、少なくともその図の回転だけなら、

Glu.LookAt(1, 2, 3, 0, 0, 0, 0, 0, 1);

GL.Rotate(-45, 0, 1, 0);
GL.Rotate(-45, 1, 0, 0);
GL.Begin(BeginMode.Lines);//正六角形描画。
{
GL.Color3(1.0f, 0.0f, 0.0f);
GL.Vertex3(0.0, 0.0, 0.0);
GL.Vertex3(1.0, 0.0, 0.0);
GL.Color3(0.0f, 1.0f, 0.0f);
GL.Vertex3(0.0, 0.0, 0.0);
GL.Vertex3(0.0, 1.0, 0.0);
GL.Color3(0.0f, 0.0f, 1.0f);
GL.Vertex3(0.0, 0.0, 0.0);
GL.Vertex3(0.0, 0.0, 1.0);
}
GL.End();

これでいけたけど。
585デフォルトの名無しさん:2009/10/12(月) 00:07:08
あぁ正六角形描画ってとこは無視しといてくれ。
586デフォルトの名無しさん:2009/10/12(月) 00:30:45
>>584
早速の御返答、有難う御座います。
提示頂きましたコードをC++用に直しまして確認しましたところ、確かに
希望します挙動になっております。
明日、現状のプログラムに直接glRotateを組み込んで再確認してみます。
夜遅くに対応して頂き、誠に有難う御座いました。
587sage:2009/10/12(月) 09:20:23
>>581
ttp://i-saint.skr.jp/pg/#gl_kanji
(要SDL。ソース公開)
ttp://zzt-kuruma.hp.infoseek.co.jp/opengl/main.htm
(glm32.lzhってやつでフォントが使える)
588デフォルトの名無しさん:2009/10/12(月) 10:49:33
>>587
ありがとう
ちょうどSDL使ってるしgl_kanjiみてみようかな
589デフォルトの名無しさん:2009/10/12(月) 10:51:06
最近のwx_widgetだとツールがコンパイルできないかもしれない
590デフォルトの名無しさん:2009/10/12(月) 14:15:21
>>577,579,580
情報ありがとうございます。
591デフォルトの名無しさん:2009/10/13(火) 19:34:10
ウインドウ上で
マウスを右クリックしたまま左右に動かすことで
視点のズームインとズームアウトさせたいのだが
移動量をどう与えると良いのだろうか
592デフォルトの名無しさん:2009/10/13(火) 22:56:15
ズームイン/ズームアウトで、視点は移動しないだろ
593デフォルトの名無しさん:2009/10/14(水) 04:13:28
ドリーのことだと解釈してやれよ
594デフォルトの名無しさん:2009/10/14(水) 07:45:00
糞の役にも立たない屑レスをするが、
右ドラッグは回転、左右ドラッグでズームインアウトするようにしてくれ
595デフォルトの名無しさん:2009/10/15(木) 10:48:35
あー、便乗質問。

>>594
何か根拠でも?
それと、左ドラッグでは何を想定している?
596デフォルトの名無しさん:2009/10/15(木) 11:18:31
某3DCADの初期設定は左ドラッグで回転、右ドラッグで移動、
左右ドラッグでドラッグ開始点基準でズームインアウト
微妙なコントロールで使いたい回転が左ドラッグなので使いやすいよ
597デフォルトの名無しさん:2009/10/20(火) 22:15:57
今更ながら

GLSLおもすれー
598デフォルトの名無しさん:2009/10/21(水) 01:37:42
質問させて下さい。
下記のような頂点バッファAとBがあるとします。
 A: a1, a2, a3, ..., a10000
 B: b1, b2, b3, ..., ..., b20000
この状態からデータのコピーなしで、
 A: a1, a1, a2, a2, a3, a3, ..., a10000, a10000
 B: b1, b2, b3, b4, b5, b6, ..., b19999, b20000
という具合にattributeを生成したいのですが、
どのようにすればよいのでしょうか?
599デフォルトの名無しさん:2009/10/21(水) 01:45:28
600デフォルトの名無しさん:2009/10/21(水) 02:10:09
>>599
まさにそれです!
ARBなのが残念です・・・。
別の方法を検討してみます。
ありがとうございました!
601デフォルトの名無しさん:2009/10/21(水) 20:24:12
テクスチャ作成をクラス化して

glGenTextures(1, &m_texture );

glBindTexture(GL_TEXTURE_2D, m_texture);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width , height , 0, GL_RGBA, GL_UNSIGNED_BYTE, data );

で作成しているのですが
m_textureの戻り値が常に0になり、
複数のテクスチャを読み込んでも、最後に読み込んだデータしか適応されなくなるのです。
いちおう、データが読み込まれて画像表示もできてるので
生成エラーではないようなのですが
602デフォルトの名無しさん:2009/10/21(水) 20:27:25
>m_textureの戻り値
って何?意味がわからん。
わかんないんです(><)
604601:2009/10/21(水) 22:38:04
>>602
glGenTextures(1, &m_texture );
実行後の &m_texture が常に0なんです。
テクスチャ削除とかしていません。

普通、1,2,3 と利用されてない数値採番するはずと思うのですが
605デフォルトの名無しさん:2009/10/21(水) 22:43:44
コンテキスト生成前に呼んでるに一票
606デフォルトの名無しさん:2009/10/21(水) 22:47:43
現在ソースがないので確認できませんが

なんやかんや初期化した後の
glutMainLoopの直前でコールしてるつもりです。
607デフォルトの名無しさん:2009/10/21(水) 23:29:02
GL_TEXTURE_2D使用する前にやることあるだろw
608デフォルトの名無しさん:2009/10/22(木) 00:14:49
>>604
GenTexture実行後の「m_texture」が0なんだよね?それとも「&m_texture」が0?
609デフォルトの名無しさん:2009/10/22(木) 00:34:56
環境とglGetErrorの結果も貼らずに質問とな
610601:2009/10/22(木) 12:32:56
環境はXP+VC2003です。
デバッグ時のブレーク部分がずれてたので
いろいろ試してテキストのコード形式をshift_jisに変更した所
行けるようになりました。
ソースをmacのxcodeで生成したのが悪かったんでしょうかね

訳わからん

ありがとうございました
611デフォルトの名無しさん:2009/10/22(木) 12:34:09
>>608
m_textureが0です

>>609
XP+VC2003
glGetErrorは、0を返してました。
612デフォルトの名無しさん:2009/10/23(金) 14:19:21
R600_SCRATCH_REG_OFFSETで引っかかったけど何で未だにこんないやがらせするんだろ
613デフォルトの名無しさん:2009/10/24(土) 03:54:49
X11上でOpenGLレンダリングしたいんですがなぜかMacOSX10.6XcodeにはGLXがありません…
GTK+等を使わず、なるだけlow levelで実装したいのですが、可能でしょうか?
わかんないんです(><)
615デフォルトの名無しさん:2009/10/24(土) 10:47:12
あれ、俺のMac(10.6.1)にはGLXはいってるけどなぁ。
それか、Macだったら素直にCocoaでOpenGL.Framework使えば?
616613:2009/10/24(土) 11:20:14
>>615
10.6.1ですがヘッダやフレームワークではGLXが見つからないです…
どこか別のパッケージに入ってるんでしょうか…

あとOpenGLでウィンドウ描写する処理をフレームワーク化したいんですが、
何かCocoa+OpenGL.framworkでxib, plist等をリソースに追加してパッケージ化しても利用できないようで…
617デフォルトの名無しさん:2009/10/24(土) 12:28:10
ヘッダーファイルもないの?
/Developer/SDKs/MacOSX10.6.sdk/usr/X11/include/GL/glx.h
とか
/usr/X11/include/GL/glx.h
とか

そもそもX自体がインストールされてないとか? でも最初から入ってるはずだしなぁ
618デフォルトの名無しさん:2009/10/24(土) 13:33:47
つか GLX 遅いよ
619デフォルトの名無しさん:2009/10/25(日) 00:10:46
でっていう
620デフォルトの名無しさん:2009/11/01(日) 12:46:36
3.2のリファレンスページなかなか完成しないな。

現状OpenGLは3.2でDirectX10.0に追いついて、コンピューティングに関してはOpenCLがあるからDirectX10.5くらいな感じだな。
今年はなかなか勢いがあったからそのまま維持してもらいたいものだが。
621デフォルトの名無しさん:2009/11/04(水) 19:23:44
法線ベクトルの値をパラメータにして
3次元空間上に平面(凹凸もないただの平面)を描画したいのですが
どのようにコーディングすればよいのでしょうか?
622デフォルトの名無しさん:2009/11/04(水) 19:32:12
法線ベクトルだけじゃ平面は定まらないから無理でしょう
平面の式 ax+by+cz+d=0 の a, b, c までしか埋まらない
623デフォルトの名無しさん:2009/11/04(水) 21:21:09
まぁ平面のバイアスというか、ずれは法線ベクトルからだけじゃ判断できないけど原点とおる平面なら描けるね。
624デフォルトの名無しさん:2009/11/04(水) 22:03:58
無限平面描くのは無理じゃね?
625デフォルトの名無しさん:2009/11/04(水) 23:55:44
>>622-623
4つめのパラメータ(原点からの距離?)が必要なわけなのでしょうか?
だとすればどうコーディングすればよいのでしょうか
どこかに参考になるコードが載っていればと思って探してはいるのですが
626デフォルトの名無しさん:2009/11/05(木) 00:02:32
>>625
何がしたいかによる。
4つめのパラメータが無ければ、平面の向きしか定まらない。例えば何らかのモデルの任意の点に対して接している平面とかを描きたいのなら、そのときはモデルの頂点から4つめのパラメータは求めることが出来る。

どういう風にコーディングすればいいとかは自分で考えるべきだろう。わからないことがあって、どうしても聞かなければならないというのならせめてもっと何をどのようにしたいか等を具体的に言おう。
627デフォルトの名無しさん:2009/11/05(木) 01:52:01
「法線ベクトルの値をパラメータにして平面を描画したい」と言われても
いったい具体的に何がやりたいのかさっぱりわからないね。
628デフォルトの名無しさん:2009/11/05(木) 02:46:24
平面と視錐台が交差するかチェック。しなかったら何も描画しない。
交差したら交点を求めて、その交点を元にポリゴンをレンダリング。

というのが一番まじめな無限平面を描く方法だろうか。

場合によっては十分大きな一枚ポリゴンを適当に向きが合うように行列掛けてレンダリングするとかでいいんじゃないだろうか。
他にはフラグメントシェーダでレイトレして平面をレンダリングするとか。
629デフォルトの名無しさん:2009/11/05(木) 05:46:08
別に無限じゃなくてもいいんでしょ?
原点から距離cのところに法線(1,0,0)の適当な平面を描いて
それを法線Nの座標系に変換するのが簡単じゃね
適当なベクトルとNの外積で変換行列は簡単に作れるし
630デフォルトの名無しさん:2009/11/05(木) 14:21:51
OpenGLでは無限遠は見えないしな。
631デフォルトの名無しさん:2009/11/05(木) 19:31:47
GL_TRIANGLESを使って描画した三角形の大きさを拡大・縮小するには
どうすればよいのでしょうか?
632621:2009/11/05(木) 20:00:46
Ax+By+Cz+D=0のDの絶対値って
法線ベクトルを正規化しているときには
原点から平面に下ろした垂線の長さになりますよね

A,B,Cで向きだけ決めて原点と平面上のどっかの点を使って
垂線と平面の交点を求められないかなあと考えたのですが
なんだかこんな話していたら数学の話になってしまいますよね
633デフォルトの名無しさん:2009/11/05(木) 21:00:12
OpenGL 始めてすぐは計算幾何にいろいろ戸惑うのも分かる。自分もそうだった。
634デフォルトの名無しさん:2009/11/05(木) 21:44:31
求められないかなぁって、求められない理由がわからない。621は中学生くらい?
635デフォルトの名無しさん:2009/11/05(木) 21:56:43
2chらしい反応だな
頭よいでちゅねとでも言ってほしいのか?
636デフォルトの名無しさん:2009/11/05(木) 21:58:57
中学生なみの思考回路だな
637デフォルトの名無しさん:2009/11/05(木) 22:25:24
距離Dで法線Nなら交点はD*Nじゃないの?そういう話ではないのか
638デフォルトの名無しさん:2009/11/06(金) 19:44:56
「一時的にデプスバッファをすり替えて描画しステンシルマスクを作った後、
元のデプスバッファに戻して上記ステンシルマスクを使用し描画。」

この処理を何度も繰り返す必要があり、

デプスバッファの切り替えとして、
glReadPixels(),glDrawPixels()、GL_DEPTH_COMPONENT
を読み書きしているのですが、
glDrawPixels()がとにかく遅いです。

一時的にデプスバッファの参照先を切り替えるなど、
何か良い方法はないでしょうか?
639デフォルトの名無しさん:2009/11/06(金) 19:50:22
一般的には glReadPixels の方が遅いと思うが・・・
ステンシルマスクを作るのにデプスバッファが不要なら、その間、単に無効にするとか
glDisable(GL_DEPTH_TEST);
glDepthMask(GL_FALSE);
640638:2009/11/06(金) 20:11:08
>>639
ステンシルマスクを作る為に一時的に特定のデプスバッファが必要になります。
その後、元のデプスバッファが必要なんです。
641デフォルトの名無しさん:2009/11/06(金) 20:54:24
ふと思っただけで出来るかどうかわかりませんがー
レンダリング先がFBOなら、必要に応じてデプスバッファのレンダーバッファを切り替えたりできたりして

そうじゃなければその一時的に使用するデプスバッファをテクスチャにしてピクセルシェーダーで距離比較しながらステンシルを生成とか
とりあえずリアルタイム処理中にglXXXPixelsの類は使用禁止でしょう
642638:2009/11/09(月) 23:03:26
>>641
床井先生の「Depth Peeling」とやりたいことが似ていたので、
参考にしてデプステクスチャとデプス値を比較させるとうまくいきました。
レスポンスも悪くなさそうです。
ありがとうございます、助かりました。
643デフォルトの名無しさん:2009/11/10(火) 20:58:23
PSP/PS3/Wii/DS

OpenGLが扱えればこれらのグラフィックス部分が開発できる!!!
まんまOpenGLなのはPSP/PS3だけなのだが。
644デフォルトの名無しさん:2009/11/10(火) 21:14:14
なぜiPhoneやアンドロイドが含まれていないのか
645デフォルトの名無しさん:2009/11/10(火) 21:15:27
まぁ現実は色々と簡単な話ではないのだが、俺もDirectXかOpenGLどっちを勉強しようかと考えたときに、決め手になったのはクロスプラットフォームな点だったな。
646デフォルトの名無しさん:2009/11/10(火) 21:24:15
いい加減、「おーぷんぐる」ちゅうのやめて欲しい
ただでさえ赤面しそうな響きなのに
GLSLを「ぐるえすえる」とか言われたときは脳髄に電気が通った。
647デフォルトの名無しさん:2009/11/10(火) 21:47:34
そうだよな、やっぱり「おーぷんぐら」だよな
648デフォルトの名無しさん:2009/11/11(水) 10:55:30
じゃあ俺は「おーぷんぐり」で
649デフォルトの名無しさん:2009/11/11(水) 14:41:00
おーぷんぐろ
650デフォルトの名無しさん:2009/11/11(水) 15:06:18
おーぷんごり
ごりさる
651デフォルトの名無しさん:2009/11/11(水) 19:19:06
ここはレベルの高いスレですね
652デフォルトの名無しさん:2009/11/11(水) 21:04:58
OpenALは?
653デフォルトの名無しさん:2009/11/11(水) 21:20:38
おーぷなる?
なんかオプーナみたいだな
654デフォルトの名無しさん:2009/11/11(水) 22:26:07
OpenAL = オープン有る
OpenGL = オープン汁
655デフォルトの名無しさん:2009/11/11(水) 22:37:55
ここは格調高いスレですね
656デフォルトの名無しさん:2009/11/12(木) 10:12:37
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |
     |┃  ノ//   ./ ̄ ̄ ̄ \
     |┃三    /  ::\:::/:::: \
     |┃     /  <●>::::::<●>  \   
     |┃     |    (__人__)     |  
     |┃三   \    ` ⌒´    /
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
657デフォルトの名無しさん:2009/11/13(金) 17:56:28
GL VIWER ではGLSL1.3の機能が使えることになってるのですが、OPENGLの関数で調べると、バージョンが1.2のままでした。

これって、GL VIWER の誤作動でしょうか?それとも、プログラム側から、現在のバージョンより上の機能を使うことができるのでしょうか?
658デフォルトの名無しさん:2009/11/13(金) 18:13:03
GL_ARB_shader_objects拡張とかGL_ARB_vertex_shader拡張とかGL_ARB_fragment_shader拡張では?
659デフォルトの名無しさん:2009/11/15(日) 23:34:59
OpenGL3.2をダウンロードしたいのですが
何処からDLすれば良いのか判りません。
是非、教えてください
http://www.opengl.org/registry/
660デフォルトの名無しさん:2009/11/15(日) 23:36:20
それはドライバの問題ですのでビデオカードの製造元へお問い合わせください
661659:2009/11/16(月) 14:16:01
>>660
それは>>私>>659に対する返答ですか?
662デフォルトの名無しさん:2009/11/16(月) 17:03:25
DirectXと同じように"OpenGL 3.2 SDK"みたいなのが存在すると思ったら大間違い。
663デフォルトの名無しさん:2009/11/16(月) 22:02:35
ああいうのと違って若干面倒臭いんだよ。
GREWでググる必要もあるかもね。
664デフォルトの名無しさん:2009/11/16(月) 22:06:43
どのみちハードとドライバが対応して無いと動かないのは一緒だけどね
あっちのが安定感はあるけど
665デフォルトの名無しさん:2009/11/16(月) 22:28:35
ああいうのとかあっちのとか言われてもわかんねー
なんだGREWって?w
666デフォルトの名無しさん:2009/11/16(月) 22:34:02
日本語が苦手な奴と、自分で調べられない奴はプログラミングに向いてない。 これは割とマジな話。
667デフォルトの名無しさん:2009/11/16(月) 22:38:00
GREWワロタw
668デフォルトの名無しさん:2009/11/16(月) 22:54:09
今の時代ならC# + OpenTKとかでOpenGLにまず触れてみるのがいいかもね。エントリポイントの記述とかはもちろんGLEWとかについても考える必要が無いし。
669デフォルトの名無しさん:2009/11/18(水) 21:19:17
WEB上から拾ってきたサンプルプログラムを参考にして勉強中なのですが、
glGenBuffers(1, &vtxID); //glGenBuffers は glew.h で定義されている関数
このような箇所で、アクセス違反を起こしてしまい先に進めません。
glutInit(&argc, argv) も glewInit() もエラーになっていません。
他にもシェーダ関係 glCreateShader も駄目です。

環境は、OS:WindowsXP, Video:Radeon IGP 340M(Omega 3.8.442), OpenGL1.1
古いハードですが、新機能分も glew(1.5.1) でどうにかしてくれないのでしょうか?
そもそも別の原因なのでしょうか?
670デフォルトの名無しさん:2009/11/18(水) 21:52:34
>>669
openGLのどのバージョンが使えるかはハードとドライバーの問題
glewはドライバで拡張された機能へのアクセスをサポートする便利ライブラリにすぎない
openGL1.5が使いたければ if (GLEW_VERSION_1_5)が通るハードとドライバが必要
使い方
ttp://glew.sourceforge.net/basic.html

# glGenBuffersARBだと使えるとかは? 
# GLEW_ARB_vertex_buffer_objectをサポートしてれば...1.1じゃ無理か
671デフォルトの名無しさん:2009/11/18(水) 23:13:32
>>670
ありがとうございます。
GLEW のbin に入っていた glewinfo.exe で使える/使えない関数リストが得られました。

GL_VERSION_1_1: OK
---------------

GL_VERSION_1_2: MISSING
---------------
glCopyTexSubImage3D: MISSING
glDrawRangeElements: MISSING
glTexImage3D: MISSING
glTexSubImage3D: MISSING

後は、ひたすら、MISSING ...
glGenBuffers, glCreateShader, ... glGenBuffersARB みんな駄目でした。

大げさな3Dのゲームとかじゃなくてちょっと試してみたかっただけなんですが、
私の環境ではどうも無理みたいです。。。
Omega Driver なら、glew なら、と思っていたんですが。
672デフォルトの名無しさん:2009/11/22(日) 23:08:38
GLSL1.50で軽くジオメトリシェーダ使ってみたが、ここまで出来たら計算コストとか切羽つまらない限りバーテックスシェーダいりそうにないな。
673デフォルトの名無しさん:2009/11/23(月) 00:55:23
MSAAを使ってるんですが、最近のグラボなら大抵使える機能なのでしょうか?
もし、普及率が低いならフラグメントシェーダーで実装することも考えているのですが、実装方法がいいのが思いつかんのです・・・
メモリや処理負荷は抑えたいのです。
674デフォルトの名無しさん:2009/11/23(月) 12:45:59
最近のならほとんど使えると思うよ。
675デフォルトの名無しさん:2009/11/23(月) 14:28:04
>>674
ありがとうございます。
あと、OpenGLの描画先をウィンドウではなくてテクスチャなどにしたいんですが、どうすればいいでしょうか?
676デフォルトの名無しさん:2009/11/23(月) 15:04:45
ググりなさい
677デフォルトの名無しさん:2009/11/23(月) 15:25:36
ググるキーワードがわかりません
678デフォルトの名無しさん:2009/11/23(月) 15:29:02
オフスクリーン○○○○○○
679デフォルトの名無しさん:2009/11/23(月) 15:31:32
そのレベルならシェーダー触るのは早い気がするよ。
まずは固定パイプラインにおける基礎から学ぶのがいい。
680デフォルトの名無しさん:2009/11/23(月) 15:31:36
OpenGL テクスチャに描画
とか
OpenGL draw to texture
とか
いくらでも思いつくだろ?
681デフォルトの名無しさん:2009/11/23(月) 15:44:15
いや、固定パイプラインなど触れる必要は無い
じゃんじゃんジオメトればいい
682デフォルトの名無しさん:2009/11/23(月) 15:50:20
サンプルが溢れているなら最初っからシェーダでもいい気がするが、シェーダ使ったサンプルが少ないからなぁ。
まずはシェーダは置いといてOpenGLの一通りの機能試したほうが、頭の中の整理が出来ていい気がする。あくまで個人的な意見だけど。
683デフォルトの名無しさん:2009/11/23(月) 16:06:05
シェーダーは環境を限定するからなぁ。未だに1.3とかの環境も結構あるわけで。
684デフォルトの名無しさん:2009/11/23(月) 16:17:34
色々ググって、見つかりましたが、拡張機能でないのとなると、バックバッファに描いたものを
glCopyTexSubImage2D関数を使ってテクスチャにコピーというものでした。
一応はなんとかなりそうです。
にしてもやってることは同じなのにDirectXとは見た目が大分違いますね。戸惑います・・・。

ありがとうございました。
685デフォルトの名無しさん:2009/11/23(月) 16:19:18
>>684
対応してるOpenGLのバージョンは?
686デフォルトの名無しさん:2009/11/23(月) 17:31:21
対応してるとは?何にでしょうか?
687デフォルトの名無しさん:2009/11/23(月) 18:05:57
>>686
君が使ってるOpenGLのバージョン。
688デフォルトの名無しさん:2009/11/23(月) 19:39:55
CT画像(bmp)を読み込んでボクセルで表示を行いたいのですが、
参考になるようなサイト等はありますか?
689デフォルトの名無しさん:2009/11/23(月) 20:39:22
ググりなさい
690デフォルトの名無しさん:2009/11/23(月) 22:59:35
>>689
すいません。ググっても出てこないもので…
691デフォルトの名無しさん:2009/11/23(月) 23:14:20
ググって出てこないようなサイトは関係者以外教えてあげられないと思う。
692デフォルトの名無しさん:2009/11/23(月) 23:14:50
それ以前になんてキーワードでググったのか気になる
URL晒せ
693デフォルトの名無しさん:2009/11/23(月) 23:57:08
>>687
私のとこは2.1.2でした。できるだけ多くの環境を考えたいので、拡張はできれば避けたいんですよね・・・
694デフォルトの名無しさん:2009/11/24(火) 00:09:50
動かしたいターゲットPCを設定して、そこで動く拡張の範囲でやればいいんじゃないの
今時一切の拡張を使わないってのは現実的じゃないし
アプリケーションの種類にもよるんだろうけど、FBOとかシェーダーとかそろそろ気軽に使っていいと思うんだけどな
695デフォルトの名無しさん:2009/11/24(火) 00:16:50
あなたの意見なんて聞いてませんよ
696デフォルトの名無しさん:2009/11/24(火) 00:26:57
もう、対応バージョンとか細かいこと調べるの疲れてしまいました・・・orz
時間が無いのに、なんでこんなに調べづらいんでしょう・・・ハァ
697デフォルトの名無しさん:2009/11/24(火) 00:47:50
いま床井先生のテクスチャマッピングのほんをよんで投影マッピングを勉強してます

そこで、はじめのイメージでは何にでも投影できるとおもっていたのですが、例えばティーポットにはムリですよね?
投影マッピングは射影テクスチャリングなどともよばれて、下のHPに載ってます

http://asura.iaigiri.com/OpenGL/gl45.html
698デフォルトの名無しさん:2009/11/24(火) 01:34:55
>>697
glutSolidTeapotはUV自動生成だから
699デフォルトの名無しさん:2009/11/24(火) 01:57:28
だから•••
ムリ?
700デフォルトの名無しさん:2009/11/24(火) 02:01:58
>>697
逆にティーポットには無理と考えた理由がわからないんだが
701デフォルトの名無しさん:2009/11/24(火) 02:14:37
床井先生の用語で話すけど
頂点の座標とテクスチャの座標を一致させるところで
サンプルでは立方体を表示させてたから、その立方体がテクスチャ座標で、頂点の座標と対応させるとおもってた
→ティーポットは対応させる点がないからムリ

702デフォルトの名無しさん:2009/11/24(火) 02:33:58
ぐだぐだ言ってる間に、glutSolidCubeをglutSolidTeapotに入れ替えて試してみたのか?
頂点シェーダを見る限り、テクスチャ座標は頂点座標から自動計算しているようだが。
703デフォルトの名無しさん:2009/11/24(火) 02:35:13
ティーポットにするとぐちゃぐちゃに
704デフォルトの名無しさん:2009/11/24(火) 02:41:54
>>701
普通にティーポットをウインドウに表示させるとする。
ティーポットは3Dで表示されている。
ところで、ウインドウはx軸とy軸を持つ2Dのビットマップだが、
u軸とv軸を持つ2Dのテクスチャと見ることも出来る。
そのとき、ティーポットの頂点のビットマップにおける座標xyを、
テクスチャのuvとみれば、投影マッピング用のテクスチャ座標となる。
705デフォルトの名無しさん:2009/11/24(火) 02:54:42
ティーポットの頂点のビットマップにおける座標xy?
取得できるの?

>>702
リンク先のプログラムはエラーメッセージがでて終了してしまう
706デフォルトの名無しさん:2009/11/24(火) 03:14:07
リンク先の普通に動いたが
707デフォルトの名無しさん:2009/11/24(火) 03:17:19
>>705
それは自分で計算する。
リンク先のVertexProgram::49がそう。
アンタがいまいちぴんときてないのは、
通常のレンダリングパイプラインの仕組みの
理解が足りないからか。
708デフォルトの名無しさん:2009/11/24(火) 03:50:11
うーん、色々ダメですね
今はリンク先のプログラムを動かそうとしています
床井先生のプログラムで、立方体をティーポットにしたら、テクスチャがグチャグチャに表示されました
きれいに投影できるか考えてみたいとおもいます
709デフォルトの名無しさん:2009/11/24(火) 04:01:49
リンク先の動かないよ…
Error : No valid techniquesとかでる
Cg Toolkitのインストールは同ページを参考にしてる

VC++ 2008だからとおもったけど706さんは動いたっていう…
710デフォルトの名無しさん:2009/11/24(火) 05:12:34
グラボ/ドライバがvp40/fp40に対応してないんじゃね
TexProj.cgfxファイルの vp40 fp40をvp20 fp 20に変えたら動くかもよ
なんのボード使ってるかしらんからわかんないけど
711デフォルトの名無しさん:2009/11/24(火) 16:31:43
>>696
>>694が言っているようにそろそろ抵抗無くFBOあたりは使ってもいい気がする。とりあえずFBOを拡張で呼んでおけばOpenGL1.5より先のハードで動くわけだし。
あんまり対応ハードのこと考えてるとOpenGLに限らずDirectXでもいい機能が使えなくなるよ。
NV拡張とかATI拡張とか使う気が引けるのはわかるけど。
712デフォルトの名無しさん:2009/11/24(火) 16:38:20
最低でもノートパソコンで動かないとね。
713デフォルトの名無しさん:2009/11/24(火) 17:18:00
ノートパソコンといってもピンキリだが
714デフォルトの名無しさん:2009/11/24(火) 18:30:56
gluLookAtでy軸を上側になる場合とz軸が上側になる場合とで
同じ結果になるためには
3次元座標の各値をどのように変換すればよいのでしょうか?
何も特別に設定しない限りは前者がデフォルトだったと思うのですが
後者のように設定したもので
715デフォルトの名無しさん:2009/11/24(火) 23:33:29
>>714
別に変換はいらないと思うよ。頂点情報とかをZ軸を上として対応させるといい。
716デフォルトの名無しさん:2009/11/25(水) 18:11:28
>>688
OpenGL Volumizer のマニュアルとか、品質上げるなら Pre-Integrated Volume Rendering とか。
Pre-Integrated... では register combiner なんか使ってたりするけど、
最近は安いカードでも 3D Texture も使えるしフィルレートも上がったしフラグメントシェーダも使えるしで、
普通に 256^3 を全画面表示でクルクルとかできる。値変換したり色付けたりも GLSL で簡単に。
717デフォルトの名無しさん:2009/11/28(土) 17:48:31
C#でOpenGLは可能ですか?
718デフォルトの名無しさん:2009/11/28(土) 18:19:01
        ,.-─ ─-、─-、
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ , -─        Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    > ---- r‐'´
      ヽ_         |
         ヽ _ _ 」

     ググレカス [ gugurecus ]
719デフォルトの名無しさん:2009/11/28(土) 19:44:53
>>717
スレ読め。
720デフォルトの名無しさん:2009/11/30(月) 13:36:02
glBegin(GL_POINTS);
で点を描画したいんだけど
結果を見たら点列が表示されません
glPointSize();で点のサイズを10にしたり極端に大きくしたりしたんですが
それでも点列が表示されないのですが何が原因なんでしょうか?

環境はMac OS X 10.6です
721デフォルトの名無しさん:2009/11/30(月) 15:07:02
それだけだと原因はいくらでも考えられて挙げるとキリがないのでソースうpしたまえ
722デフォルトの名無しさん:2009/12/01(火) 06:27:42
背景色と描画色が同じだったりなw
723デフォルトの名無しさん:2009/12/03(木) 15:43:13
webのcgiなど経由でグラフィック描画をさせることはできるのでしょうか
724デフォルトの名無しさん:2009/12/03(木) 16:00:09
質問の意味がよく分かりませんが、とりあえずWebGLと答えておけばよいのでしょうか
725デフォルトの名無しさん:2009/12/03(木) 16:18:20
webGLは来年まで出ないなら
例えばIE限定でもいいので今動くものはないのでしょうか
726デフォルトの名無しさん:2009/12/03(木) 16:22:21
Processing は OpenGL 使えるぞ。
727デフォルトの名無しさん:2009/12/08(火) 13:35:56
質問です。
xpsp3上でC#、opentkなるラッパーを使ってopenglを勉強中なんですが、
文字を描画するのにDllImport属性をつけてwglのUseFontBitmaps関数を使用しています。
で、適宜ReleaseDCやopentkでのGL.DeleteLists関数を使ってリソースを解放している
つもりなんですが、どうしても最後はメモリ不足だってしかられてフリーズします。
何かいい解決策ないでしょうか?
728デフォルトの名無しさん:2009/12/08(火) 15:09:07
GDIでメモリに文字をレンダリングして、そのイメージをテクスチャに転送したらいいと思う。
729デフォルトの名無しさん:2009/12/08(火) 15:12:54
>>727
・がんばってデバッグする
・これが動かないのはどう考えてもおかしいというくらい小さいプログラムを作ってソースをupする
730727:2009/12/08(火) 17:25:04
レス サンクス。
質問しっぱなしもあれなんで、一応結果を書いておきます。
念のためglDeleteListsの前後でglIsListで確認したけど、キチンと消してる。
じゃあってんでディスプレイリストを実行した後、全部消去して
必ず指標の開始を1にしてもだめ。orz
728さんのいうように全然違うやり方でしないとだめそう。
ソースupは一部、ぐぐった結果をコピペして使っているので、
勝手にupするのもあれだし、こんな事で許可を求めに
数人の方に連絡するのもあれなんで、とりあえず、止めときます。
731デフォルトの名無しさん:2009/12/08(火) 21:57:09
ぐぐった結果を使っているのなら、それは公開されているものなのでコピペ部分まで晒しても問題ないよ
個人により程度差はあるだろうが、一般的には、そんなことでいちいち連絡してくるなってところだろう
732デフォルトの名無しさん:2009/12/10(木) 22:09:36
GLSLにprintfみたいなものはないんでしょうか?
何が起きているか良く分からないので変数の値をトレースしたいのですが。
デバッグもどうやればいいのか分かりません。
733デフォルトの名無しさん:2009/12/10(木) 22:12:08
普通にprintfで出せば?
ウィンドウには出ないが、コンソールを見ればいい
734732:2009/12/10(木) 22:13:40
ごめん勘違い、GLSLの中か
わかりません(´・ω・`)
735734=733:2009/12/10(木) 22:15:22
名前間違えた(´・ω・`)
736デフォルトの名無しさん:2009/12/10(木) 22:54:43
>>732
普通には出来ない。
コンパイル時にわかるエラーとかはOpenGLのGetShaderInfoLogでわかるけど。
737デフォルトの名無しさん:2009/12/11(金) 08:55:06
GLSLを何も分からない俺が考えるに
テクスチャに文字を描画する関数を作ればいいな
738デフォルトの名無しさん:2009/12/11(金) 16:52:20
>>732
苦労するよな。デバッグ。
おれは、テクスチャにちまちま出力してるよ。
739デフォルトの名無しさん:2009/12/11(金) 19:53:58
OpenGL3.2以降ならTransformFeedback使えば、VertexShaderかGeometryShader内での値も一応見ることができるな。

>>737
残念。シェーダーは頂点毎、画素毎に動くから基本的に1ピクセルずつしか処理されない。
だから一回の処理の中で文字を書くというのも不可能だよ。
740デフォルトの名無しさん:2009/12/11(金) 23:50:08
2Dで画像を回転・拡大縮小して描画するのって、どうしたら速い?
glTranslateやglRotate使ってるけど、大量に描画すると遅い気がする。
741デフォルトの名無しさん:2009/12/12(土) 00:04:28
>>740
変換操作はTranslateとかでいいと思うけど、画像のテクスチャはひとつにまとめてテクスチャ座標で切り出したりしたほうが速いかも。
あと、テクスチャフィルタリングを可能であればニアレストネイバーにするとか。
プリミティブのタイプでも差が出るとも聞くからトライアングル系にするとか。
742デフォルトの名無しさん:2009/12/12(土) 05:31:54
いつの間にかfreeglut 2.6.0のRCが取れてた
4年ぶりのリリースかぁ
743デフォルトの名無しさん:2009/12/12(土) 17:04:45
>>732
フラグメントシェーダでのデバッグなら、知りたい変数の値をだいたい0〜1の範囲になるように
スケーリングしたりして色として出力して画面の色を見てどんな値になっているか確かめる方法を俺はよく使ってる。
またはNaNだったり0だったら赤色出力するという方法もある。

Cg言語だとnVidiaのサイトにshader debuggerというソフトがあるけど
GLSLにそういうデバッガがあるかどうかは知らん
744732:2009/12/12(土) 22:50:51
>>733-739, >>743
みなさん、ありがとうございます!

>>739
ES 2.0対応を考えていたのですが、開発はなるべく互換性を保ちつつ
GL3.2でやっておき、後でES2.0用に直すようにすれば TransformFeedback も
使えそうですね。ありがとうございます。

>>738 >>743
お二人は同じやり方をしているのでしょうね。
テクスチャの色として出力する方法、試してみようと思います。
ありがとうございます。
745デフォルトの名無しさん:2009/12/13(日) 18:57:43
テクスチャで立方体のそれぞれの面に違う画像を貼るプログラム書いてるんだけど
なぜか前面と後面しか正常に表示されない。。。
しかも右面は欠けちゃってるし。。。
もうダメポ
746デフォルトの名無しさん:2009/12/13(日) 19:32:38
がんばれ!
と言いたいところですが、
そんな状態ではあなた自身が辛いだけでしょう。
仕事や共同作業でしたら他人も迷惑します。
そのまま諦めて下さい。
747デフォルトの名無しさん:2009/12/13(日) 19:43:07
>>745
フラグメントシェーダで、UV値をそのまま色にして出力するんだ。
ちゃんとUVが張ってあれば綺麗なグラデーションがでるし、
UVがおかしければ一色になってたり一つの方向のみグラデーションしてたりする。
748デフォルトの名無しさん:2009/12/13(日) 20:55:55
初歩のことやってる人にいきなりシェーダ使わせるとかないわー
749デフォルトの名無しさん:2009/12/13(日) 23:09:26
OpenGL 3.0から入った人かもしれないだろ。
750デフォルトの名無しさん:2009/12/13(日) 23:30:21
お前天才だな
751デフォルトの名無しさん:2009/12/14(月) 02:49:08
いやOpenGL ES 2.0から始めた人かもしれないぞ
752デフォルトの名無しさん:2009/12/14(月) 21:15:48
奇才現る
753デフォルトの名無しさん:2009/12/14(月) 22:10:03
固定機能パイプラインでもUV座標をglColor*に渡して確認できるじゃん。
754デフォルトの名無しさん:2009/12/14(月) 22:26:48
凡才はすっこんでろ
755デフォルトの名無しさん:2009/12/14(月) 22:40:22
GLSLなんですが、頂点シェーダーでそのポリゴンの描画をキャンセルすることってできないですか
大量のポリゴンをテクスチャから参照した位置に移動させてるんですが、描画したいのは一部だけなので
756デフォルトの名無しさん:2009/12/14(月) 23:56:11
>>755
ジオメトリシェーダーならポリゴン描画キャンセルできるが。
757デフォルトの名無しさん:2009/12/15(火) 00:57:33
>>756
考えても見なかった。ちょっとオーバーな気もしますが、最後の高速化案として調べて見ます。
758デフォルトの名無しさん:2009/12/15(火) 06:33:37
クリッピングの範囲外に吹き飛ばすだけじゃ駄目なの?
759デフォルトの名無しさん:2009/12/17(木) 05:54:13
>>745
glTexcoordに渡す s, t, r, q の値そのものを勘違いしてないかい?
glVertexと同じ空間イメージで渡してないかい?

ただテクスチャ貼るだけなら s, t だけで良くて、各面に対し
左上( 0, 1)、右上( 1, 1)
左下( 0, 0)、右下( 1, 0)
見たいな指定してるぅ?
760デフォルトの名無しさん:2009/12/20(日) 01:52:36
>>759
ありがとう
761デフォルトの名無しさん:2009/12/21(月) 02:36:05
joglのインストールをしたくて

http://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をインストールすればいいんですか?
もう二週間くらい悩んでいます。どうかお願いします。
762761:2009/12/21(月) 03:10:56
ちなみにjogl-natives-windows-i586.jarをダウソして
他のファイルも
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.
…という結果です。
763デフォルトの名無しさん: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
を試してみて
764761:2009/12/21(月) 14:21:02
>>763
ありがとうございます。

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)

です。
765デフォルトの名無しさん:2009/12/21(月) 16:47:54
CT画像(bmpファイル)を連続して読み込み、
3次元立体として表示したいのですが、どうやればいいかわかりません。

サンプルコードやいいサイトがあったら教えてください
766デフォルトの名無しさん:2009/12/21(月) 17:32:55
767デフォルトの名無しさん:2009/12/21(月) 17:39:24
>>766
ありがとうございます。
初心者なので、できればサンプルなどある所はないでしょうか?
768デフォルトの名無しさん:2009/12/21(月) 17:54:04
辞めてしまえよ
769デフォルトの名無しさん:2009/12/21(月) 19:11:13
ソースコードのあるページもばっちり引っかかってるんだがなぁ
770デフォルトの名無しさん:2009/12/21(月) 19:42:45
>>769
まじですか!?
探してみます!!
771デフォルトの名無しさん:2009/12/24(木) 14:08:59
FBOで使うデプスバッファとして、
デフォルトのデプスバッファを割り当てる
(共有する)ことは可能でしょうか?

OpenGLのアプリケーションのプラグインで、
特定のオブジェクトの描画のみを担当するのですが、
それまでの描画結果の深度でデプステストしつつ、
そのオブジェクトのみにポストエフェクトをかけたいんです。
システム全体の描画処理に介入できないため、
他のオブジェクトの描画先をFBOにすることは
できません。
772デフォルトの名無しさん:2009/12/25(金) 10:11:54
>GLSLのデバッグ
glslDevilとかGLInterceptとかは?
俺は使った事ないんだがフリーだし、前者はよく更新してるし良さそうだが
773デフォルトの名無しさん:2009/12/25(金) 18:20:30
半透明処理に関して質問があります。
床井先生のサイトを下にMultisampleを使う半透明処理をしました。
nVidiaのコントロールパネルでの設定も行い、床井先生の
サンプルプログラムも自分のプログラムもきちんと半透明処理が
できていたのですが、今日になって同じPCで再コンパイルをしたら
どちらも半透明にならなくなってしまいました。
コントロールパネルの設定も確認したのですが、変わっていません。
どなたか原因がわかりますでしょうか?
ちなみに、グラボはQudro FX 570Mです。
774デフォルトの名無しさん:2009/12/25(金) 18:24:00
>>773です。
早速ですが、自己解決してしまいました。
どうやらデュアルディスプレイにしていると、半透明処理ができないらしく、
シングルディスプレイに戻したらきちんと半透明処理ができました。
とりあえずプログラム的には解決できたのでよかったのですが、
そういうものなのでしょうか?どなたかご存知でしたらご教授ください。
775デフォルトの名無しさん:2009/12/25(金) 18:42:59
設計によると思う。
我が家のChrome430はシェーダだけがなぜか速くて重宝しているが、
デュアルディスプレイにするとvsync同期のバッファ切り替えが効かなくなる。
おそらく待ち回路が一つしかないせいだと推測している。
その環境だとMultiSample用のバッファとマルチディスプレイ用の資源がなにがしか競合しているのかと。
776デフォルトの名無しさん:2009/12/25(金) 18:51:58
とりあえず、お前らの環境が特殊過ぎるだけだ。と釣られてみる。
777 :2009/12/25(金) 19:08:34
ありがとうございます。まあ2年近く前のノートPCなんで、
特殊なのは許してください。

いろいろと競合するものなんですね。今後はこういう点についても
気をつけていきます。
778デフォルトの名無しさん:2009/12/25(金) 19:57:32
ここのスレって初心者質問OK?
779デフォルトの名無しさん:2009/12/25(金) 20:09:30
OK。
780デフォルトの名無しさん:2009/12/25(金) 20:12:31
NO。
781778:2009/12/25(金) 20:22:23
どっちやねん
782デフォルトの名無しさん:2009/12/25(金) 20:23:33
そんなレスしてる暇あるならさっさと質問書くといいよ。
783デフォルトの名無しさん:2009/12/25(金) 21:23:35
書いちゃだめっ。
784デフォルトの名無しさん:2009/12/26(土) 06:25:21
>>778じゃないが、初歩的な質問でスマソ

制作中のFPSに組み込もうとボーンアニメーションの実装中。
毎回フレームごとに各頂点の座標を再計算して描画するのと、
初期化時点で1フレーム1フレームの頂点配列を用意しておく
のとでは、どっちが一般的な作りなんだろうか?

大体1000ポリ前後のキャラが4〜6体ほどの描画を予定。
メモリとCPUの兼ね合いなんだと思うけども、普通はどっちなのか
あるいは他に画期的な方法があるのなら教えて貰いたい
785デフォルトの名無しさん:2009/12/26(土) 10:31:53
毎フレーム座標計算だろ。
あらかじめ全キャラの全アニメーションパターンを計算して
保存しておくのはメモリ的に無理だろう。
786デフォルトの名無しさん:2009/12/26(土) 11:51:57
キーフレームアニメーションってキーになる位置の座標はあらかじめ持っとくんじゃなかったっけ?
787785:2009/12/26(土) 12:19:12
>> 786
No.
あらかじめ持っているのはキーフレーム毎にジョイント(ボーン)の姿勢ポーズだけ。
そこから毎フレーム、メッシュの全頂点の変形後の位置を計算する。
>>784はこの変形後の頂点をあらかじめ全て計算して持っていたらどうかと聞いているが、
キーフレーム数x全頂点数のメモリが必要になるので現実的には無理。
(どうせ途中を補完しないといけないし)
788784:2009/12/26(土) 15:39:35
>>785-787
サンクス
正月返上で実装してくる
789785:2009/12/26(土) 16:04:02
超頑張れ。この辺キャラクターアニメーションには必須の技術なのに
日本語で読めるまともな解説と実装例がないよな。
床井先生あたりちゃんとした解説を書いてアップしてくれないだろうか……
790デフォルトの名無しさん:2009/12/26(土) 16:36:50
そんな名指しで頼るなよw
791デフォルトの名無しさん:2009/12/26(土) 17:55:32
名指しワロタw
まぁソフトの実装よりデータ用意する方が大変なんだけどね。
ゲームプログラマーになる前に〜の本とかそういう部分をカバーする本だと
思ったけどスキニングは載ってないのかな
792デフォルトの名無しさん:2009/12/26(土) 19:38:38
3D格闘ゲームプログラミングに載ってた気がする。
793デフォルトの名無しさん:2009/12/26(土) 22:15:57
>>791
ゲームプログラマーになる前に〜はロボファイトまでなので、
スキンアニメーションの解説は無し。解説逃げたな。

>>792
その本読んだ事無いけど違うと思う。たぶんDirectXのモーション付きのXファイルを
どうやって表示するかを書いてあるだけだと思う(実はこれが意外にめんどくさい)。
OpenGLにそんな機能はないので全て自分で実装することになる。
794デフォルトの名無しさん:2009/12/26(土) 22:18:11
JavaでOpenGLを扱えるようにするライブラリには
JOGLの他にLWJGLというのもあるみたいだけど
どっちがいいの?
ゲーム作るのに使うならLWJGLの方が良いのかな。
795デフォルトの名無しさん:2009/12/26(土) 22:31:05
Java3Dで悩み解消
796デフォルトの名無しさん:2009/12/26(土) 23:38:12
Java3D<OpenGL
797デフォルトの名無しさん:2009/12/27(日) 22:13:46
>>777
ついでなので情報出しとく。
デュアルディスプレイだとFBOへの描画が極端に遅くなるみたい。
WindowsXP64bit + GTX280, 8800GT, 9600で確認した。
798デフォルトの名無しさん:2009/12/28(月) 19:02:20
3D格ゲープログラミングには一応スキニング行列の解説を一章ぐらい掛けて説明してたはず。
それ以外だとGems1とTheCgTutorialにも。
実装例だとどこぞの3Dエロゲのツールとか。
一般的にシェーダでやるものだから、教えるにしても前提条件が割と高いんだよね。
教材データも必要だし。
799デフォルトの名無しさん:2009/12/28(月) 21:37:27
Cg The Cg Tutorial日本語版のスキニングの説明は最悪。
図がなく1ページしか解説がない。あれ読んで理解できたらエスパー認定できる。
今となってはCgを学ぶ価値もないので人に勧めちゃダメ。
800デフォルトの名無しさん:2009/12/28(月) 21:57:20
GLSLでスキニング書くとすると、ボーンのマトリックスとかウェイトとかはどういうふうに受け渡すのが普通なんでしょうか?
801デフォルトの名無しさん:2009/12/28(月) 22:25:38
CPU側は glVertexAttrib*
ジオメトリシェーダに in 変数
というところだと思う
802デフォルトの名無しさん:2009/12/30(水) 03:13:17
>>801
なるほどGLSLはまだ使い始めたばかりですが、勉強して作っていきたいと思います。
803デフォルトの名無しさん:2009/12/31(木) 13:45:47
規制解除されてるの気づかなくて遅れた。

>>793
>>798も言ってるけど、3D格闘ゲームプログラミングは
xファイルからモーションデータまでローダを自前で作って、
スキニングも全部自前で実装してる。但し、CPUでだけど。
後はGLSLの知識+αでGPUに落とし込めばいけるさ。
804デフォルトの名無しさん:2009/12/31(木) 21:49:49
GLSLの勉強がしたいのですが、最高の1冊を教えてください。
できれば日本語でお願いします。でもAmazonで探した限りちゃんとした本はなさそうです。
英語でも良いです。
805デフォルトの名無しさん:2009/12/31(木) 22:32:33
本の紹介が出来なくて申し訳ないけれど、GLSLの基本的な使い方は床井先生のページにもある程度あるよ。
それにシェーダ言語ってなるとHLSLとかと割と似ているから、それを参考にすれば結構できるようになると思う。
806デフォルトの名無しさん:2010/01/01(金) 17:28:51
おい、床井先生ここ見てるだろ?ってくらいタイムリーなんだがw
いや勉強になるなぁ
807デフォルトの名無しさん:2010/01/01(金) 21:18:37
確かにw
808デフォルトの名無しさん:2010/01/01(金) 21:29:17
床井ッ、見ているなッ!
809デフォルトの名無しさん: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
810デフォルトの名無しさん:2010/01/01(金) 21:38:39
床井先生
http://marina.sys.wakayama-u.ac.jp/~tokoi/
卒業生の進路
この間, 卒業生から「自分がリードプログラマを務めた」というゲームソフトが送られてきました. もうね, 鳥肌が立ちましたよ.
自分のやっていることが学生の皆さんにとって役に立っているかどうか正直言って自信が無かったんですけど, 本当にそういう仕事してるんだ.
すげー. みんなあんまり連絡くれないし,
811デフォルトの名無しさん:2010/01/01(金) 21:52:51
あと1点疑問が。

class Bone {
float position[4]; // カレントのボーンの平行移動成分
float rotation[4]; // カレントのボーンの回転成分
float animation[16];
float length; // カレントのボーンのスケーリング成分
const Bone *parent; // 親ボーン
...

この animation[16] というのは何を入れておく所?
バインドボーズの逆行列(M^-1)だと思うのだけれど、
それにしては名前が変。あとスケルトンとポーズを1つのBoneクラスにまとめるのは実用上どうかと。
(ゲームだとキャラ10体出すとスケルトン1にポーズ10だから、分離していた方が良い。)
まあゲーム作る訳じゃないから良いか
812デフォルトの名無しさん:2010/01/01(金) 23:18:43
点を表示する時、裏向きの点を隠したいと思ってます。
ポリゴンならカリングすれば消せるのだけど、点の場合は黒く塗りつぶされて
しまうようです。
813デフォルトの名無しさん:2010/01/01(金) 23:57:03
点の向き?
814デフォルトの名無しさん:2010/01/01(金) 23:59:41
ポイントレンダリングしてるような感じです。

glEnable(GL_LIGINGとGL_LIGHT0)
glMaterialfv(〜〜〜)
glPointSize(3)
glBegin(GL_POINTS)
glNormal3d(1, 0, 0)
glVertex3d(0, 0, 0)
815デフォルトの名無しさん:2010/01/02(土) 00:08:25
もともと面の向きだって glNormal* で与えられるもんじゃないよな?
シェーダで消せば?
816デフォルトの名無しさん:2010/01/03(日) 14:12:11
OpenGLってDirectXに比べるとプリミティブすぎるというか機能足り無くない?
標準のシーングラフとかあっても良いと思うのだが……
何か無いですか?
817デフォルトの名無しさん:2010/01/03(日) 14:51:51
補助ライブラリーみたいなやつ使えよ。
818デフォルトの名無しさん:2010/01/03(日) 14:54:29
directxと比べることが何か間違ってると気がつかないの?
そういえば、linuxでdirectx apiって使えないよね。
819デフォルトの名無しさん:2010/01/03(日) 15:10:57
wineのdllもってくれば使えるんじゃね
820デフォルトの名無しさん:2010/01/03(日) 15:26:51
>>817
具体的には何が良いですか?
モーション付きのモデルがロードできて、
シーングラフを構成できる奴を教えてください
それなりに有名で使用実績が必要です。

こういう事を言う人は多いのですが
具体例を聞くととたんに黙り込んでしまいます。
821デフォルトの名無しさん:2010/01/03(日) 15:37:49
>>819
別に遊びでdirectxやりたいわけじゃないからそういうアホな方法は遠慮しとくは。
822デフォルトの名無しさん:2010/01/03(日) 15:39:40
>>820
ぐだぐだいうなら素直にMSを使え
823デフォルトの名無しさん:2010/01/03(日) 15:40:43
>>820
PLIB
824820:2010/01/03(日) 15:59:52
LinuxなんでDirectXは無いですね。
>>823 そういうゲームライブラリじゃなくて。
それならIrrlichtやOgreで良い。
825デフォルトの名無しさん:2010/01/03(日) 16:00:00
>>820
817じゃないけど、NVSG(現SceniX)とかはどう?用件は満たしてると思うけど。
http://developer.nvidia.com/object/scenix-details.html


もし、OpenGLでゲームを作るってことが優先順位が高いならOgre3Dとかの方がいいかもしれないけど。

826デフォルトの名無しさん:2010/01/03(日) 16:23:26
>>820
SceniX
827デフォルトの名無しさん:2010/01/03(日) 16:44:11
ていうかどうせライブリの実体はグラボのハード処理なんだし、JOGL(java3d+linux)でいいでない?
828820:2010/01/03(日) 17:03:46
オープンソースならそれでいいけどnVIDIAはダメ
829デフォルトの名無しさん:2010/01/03(日) 17:05:09
自分で作るしかないだろうな。
830デフォルトの名無しさん:2010/01/03(日) 17:19:48
openglはまだ始まったばかりだからライブラリが出てくるのもこれからだろうな。
gpuも進化してるし、今実用的なのを考えるなら素直にMSにしろ。
高々windows os代3万程度だろ。
linuxはnative ioはcかruby/pythonで使い捨て、ロジックはjavaで実装して他段レイヤーで抽象化しとくしかない。
cg とかglslとか次から次ぎともう嫌だろ?
仕事であたりまえのように使ってるならまだしも、openglの奴らは未だにOOP的(モジュール的というか)な考えが出来る奴が少ないしライブラリの品質も未だに3流大学の研究所レベルを出てない。
どうせgpu interfaceなだけだし、なんならさしあたりwin限定でdirectx apiをjavaでラップすれば十分。
831デフォルトの名無しさん:2010/01/03(日) 17:22:37
こういう事を言う人は多いのですが
具体例を出すととたんに条件を増やしてしまいます。

# っていうか、>>816 でいう所の
# >>820 の条件にあたるような立派な標準のシーングラフってあるんだっけ?
832デフォルトの名無しさん:2010/01/03(日) 17:23:33
訂正。
# >>820 の条件にあたるような立派な標準のシーングラフってDirectXであるんだっけ?

833820:2010/01/03(日) 17:39:36
>>830 はよくわかってるな。
OpenGLの拡張機能をちまちま検索したり、
せっかく覚えたCgが役立たずになったり、
対応するモデルデータを拾ってきてモーション付けたら
意味不明のエラーがでて動かなかったりするのに疲れたんだお。

よく定義されたフリーでクロスプラットフォームなC++かRubyのライブラリが欲しいんだお
ネットで拾ってきたモデルが何の問題もなくロードできて、
それなりに見栄えのする簡単なシーンが作れればいいんだお。
(でもシェーダーだけは書かせて)
チュートリアルとサンプルプログラムは日本語で読みたいんだお。
サンプルのモデルデータもいっぱい欲しいお。

、というのが全部そろってるOpenGLの上位ライブラリ無いですかね?
834デフォルトの名無しさん:2010/01/03(日) 17:46:40
はいはい
豆腐で我慢しましょうね
835デフォルトの名無しさん:2010/01/03(日) 18:18:35
>>833
openglの上位ライブラリがdirectxと考えられないか?
おまえに必要なのは、openglのライブラリじゃなくてOOP的な思考方法。
まずその旧式な考え方を変えたほうがいいだろう。
836デフォルトの名無しさん:2010/01/03(日) 18:22:51
これいつかの京大野郎だろ。
837デフォルトの名無しさん:2010/01/03(日) 18:27:46
アメリカやフランスだと良くあるんだけど、研究所の先生がライブラリの設計をして、各部分を学生に実装させるっていう手法。
学部生程度ならライブラリの(一部の)実装とアルゴ研究っていう卒論でいけるわけで、日本だとそういうことやって、かつ研究室の成果として公開してるのないでしょ。
tronと同じでopengl(renderer)のセンスある若いのもどんどん日本を離れて日本はこの分野でも孤立すると思うよ。
先生自体がプログラムの設計論も含めてソフトウェアのことをまったくと分かってないってのが大きいんだろうけど、無能な先生しかいないしこの環境のままじゃ10年後の日本も世界的にも低レベルのままだろうね。
838820:2010/01/03(日) 18:32:46
>>837 スタンフォードとか結構そういうのあるね
しかも卒業したらATIやnVIDIAに入って、さらにすごいのを作ってたりする。
日本だと無いね。まあCGの研究しているところ自体少ないが。
839デフォルトの名無しさん:2010/01/03(日) 19:06:00
君、世の中の今年らなすぎ
atiとかに入ったりしないな
頑張ったところでせいぜいベンチャーの携帯ゲーム会社かNTTdokomoの下請け(いわゆるIT土方)
840デフォルトの名無しさん:2010/01/03(日) 19:13:56
スタンフォードを出た連中が来日してドコモの下請けなんかするの?
それならそれで日本にとってはありがたいと思うけど。
841デフォルトの名無しさん:2010/01/03(日) 20:19:04
先生の質も含めて、大学よりも専門学校の方がより進んでる。
842デフォルトの名無しさん:2010/01/03(日) 20:22:15
>>836
正解。
843デフォルトの名無しさん:2010/01/03(日) 20:26:39
>>836,839,841
ナイナイww
大学の先生&学生は質の高いライブラリを提供して欲しいというのは本当
今のままだと100年たってもPixarに勝てる気がしないわ。
844デフォルトの名無しさん:2010/01/03(日) 20:27:52
ハードル高過ぎ。
845デフォルトの名無しさん:2010/01/03(日) 20:45:54
大学の先生が中規模ソフトウェア・ライブラリの設計論(UMLやOPPも当然)をちゃんと理解してればそうでもない。
院生(後期)を何人かリーダで監督者(admin)にして、学部生を卒論研究と称してこき使って実装させれば2年で世界レベルのライブラリが作れる(但し汎用じゃなくてその先生の専門分野になりやすい)。
実際学部生なんか、バイトでゲーム会社のデバッグ要員なんだし、実習とコーディングが主なんだし、もっとアメリカの大学っぽい教育方法になったほうがいいと思うよ。
するとそのままゲイツとかジョブスみたいの、はたまたグーグルやフェイスブックみたいな若い企業が現れるだろうな。
846デフォルトの名無しさん:2010/01/03(日) 21:04:08
このまえ東工大がgpuいっぱい買ったから、学部生をこき使って並列ライブラリの有用な(実験検証済み)参照実装ライブラリを作ってくれ。
ライセンスはbsd,mitみたいなtitライブラリとか。
どうせ国税でやってるんだし、もうすこし教育ってのを考えて直して少しでも形に残るものを作っていくべきだと思うよ。
847デフォルトの名無しさん:2010/01/03(日) 21:21:01
この人なんでム板で薄っぺらい夢語ってんの?
848デフォルトの名無しさん:2010/01/03(日) 21:31:49
>>847 夢も希望もない冷め切った人間かっこワルイ
849デフォルトの名無しさん:2010/01/03(日) 21:33:04
いい加減空気読んでくれない?夢持つのは結構だけどさ、もうちょっとその意見が対象に届く場所を選んで言ってくれ。
850デフォルトの名無しさん:2010/01/03(日) 21:37:58
ぷっ
851デフォルトの名無しさん:2010/01/03(日) 21:38:01
いいじゃんどうせ過疎スレなんだし、読むような空気もたいしてないだろ
852デフォルトの名無しさん:2010/01/03(日) 22:56:23
ここは便所の落書きとして有名な2chだよね
853デフォルトの名無しさん:2010/01/03(日) 23:43:16
openGLには貴重な便所だ
854デフォルトの名無しさん:2010/01/03(日) 23:49:25
>>846
東工大をTITと略すのはやめて!><
855デフォルトの名無しさん:2010/01/04(月) 00:14:52
そもそも英語が出来るから日本のコミュニティーなんかに期待してない。
12月の横浜を知ってると、やっぱ、一応同じ日本人として今の現状を嘆いてみたかっただけw
856デフォルトの名無しさん:2010/01/04(月) 01:01:13
12月の横浜?
857デフォルトの名無しさん:2010/01/04(月) 01:30:13
SIGGRAPH ASIAのことだろ
858デフォルトの名無しさん:2010/01/04(月) 01:52:16
>>849
例えばどこ?
言い出しっぺなんだしどこだか示すことぐらい出来るよね?!
859デフォルトの名無しさん:2010/01/04(月) 01:57:53
それは無理
860デフォルトの名無しさん:2010/01/04(月) 02:02:35
>>854
公衆無線LAN
861デフォルトの名無しさん:2010/01/04(月) 02:03:23
IDつくようにならないかな。必死なやつがよくわかるからな。
862デフォルトの名無しさん:2010/01/04(月) 03:26:30
>>860
???
863デフォルトの名無しさん:2010/01/04(月) 11:35:26
間違いなく既出だろうが、3.xの仕様見て愕然とした。
ttp://www.asahi-net.or.jp/~yw3t-trns/opengl/version/index.htm
特に頂点とかプリミティブ定義の非推奨っぷりがひどいw

glのクラスライブラリ作ってる途中で、これまでglBeginとかのスタイルで組んできたんだが
やっぱり最初から作り直しでオリジナルシェーダベースにしたほうがいいんだろうか…
それともgluのプリミティブの互換として頂点データの渡されるgl_Vertexを信じて
gl_Vertex互換シェーダ+従来のプリミティブ定義のままでいいんだろうか…
864デフォルトの名無しさん:2010/01/04(月) 12:23:31
ESのころからそうだろ
というかやっぱ固定機能のステートマシンはマルチスレッドとか考えると扱いづらいよね、
というところなのだろう。
865デフォルトの名無しさん:2010/01/04(月) 13:03:05
やっぱり固定機能は分離されてたほうがスッキリしててわかりやすいね。
866デフォルトの名無しさん:2010/01/04(月) 13:07:33
俺はむしろもっと機能を削って欲しいがね
OpenGLはいらん機能が多すぎて使い物にならん。
867863:2010/01/04(月) 14:41:34
いや、確かに>>864->>866の言う事もわかるんだが、
そうするとライブラリは用いるglslソースもある程度縛られてくるだろ?
シェーダ変えたら動かないライブラリとか、シェーダの変更が限定されるライブラリとかおhるだろ
…まぁ、仮想関数で固定機能版とGLSL版としておけばいいか…
868デフォルトの名無しさん:2010/01/04(月) 16:29:34
いっそ俺はシェーダー捨てて固定パイプに回帰して欲しいね。全部ハードで作り込んで、
glEnable ほにゃらら
で使えるようにしてくれると非常にありがたい。
馬鹿でもチョンでもアンチャ2並のCGが表示できるようにして欲しい。
869デフォルトの名無しさん:2010/01/04(月) 18:12:47
それは固定機能パイプライン相当のラッパーライブラリを作ればいい話ではないかい
870デフォルトの名無しさん:2010/01/04(月) 19:03:43
>>869
2.xまでの固定パイプラインを全て網羅するラッパー作るのはかなり骨が折れるんではないかい?
871デフォルトの名無しさん:2010/01/04(月) 23:59:23
個人でやるならそうだろうね
かといってプロジェクトぶち上げて人を募っても
需要が無くて集まらないだろうね
868は是非がんばって欲しいね
872デフォルトの名無しさん:2010/01/05(火) 10:07:29
>>868

> 馬鹿でもチョンでもアンチャ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を検討
してみるとか。あれはあれでオーサリング環境に癖があるけど。
ラッパーライブラリを作ることが目的であれば頑張ってください。
873デフォルトの名無しさん:2010/01/05(火) 10:09:57
>>864
オブジェクト指向の発達した今なら多態性も簡単に実現できるが
openglはC言語だし、C言語で多態性を実現するためのステートマシンなのだろう。
描画先共有した状態でコンテキストを独立して取得できれば一番なんだろうけどね
874デフォルトの名無しさん:2010/01/05(火) 12:03:53
>>872
そういうライブラリの欠点は明らかで
1. 値段が高い
2. ソースが公開されてない
3. 移植性がない
4. 使用者が少ない
5. 周辺技術との接続性が悪い
と、採用する利点が少ない。
ハードで作っても良いしソフトでも良いけど、標準化の利点はこれらの欠点を駆逐する。
今の日本に必要なのはオープンソースの良くできたロイヤリティフリーな
グラフィックライブラリの整備だと思うね俺は。
その上でゲーム会社はゲーム作ったらいいし、家電のUIを作っても良いし
初音ミクが踊るソフトを作っても良い。
875デフォルトの名無しさん:2010/01/05(火) 13:23:06
結局何がほしいんだ?
876デフォルトの名無しさん:2010/01/05(火) 13:30:47
テクスチャーユニットの数をOpenGLコンテキストを作る前に取得する方法はありますか?
いきなり glGetIntegerv (GL_MAX_TEXTURE_UNITS, &num) したら0しか返ってきません。
877デフォルトの名無しさん:2010/01/05(火) 13:40:06
ない
878デフォルトの名無しさん:2010/01/05(火) 13:54:41
ならせめて今コンテキストが有効かどうかクエリーする方法はありませんか?
879デフォルトの名無しさん:2010/01/05(火) 13:58:23
コンテキストが有効って?
よくわからんけど、コンテキスト作ってテクスチャユニット調べて不満だったら終了すりゃいいんじゃないの
880デフォルトの名無しさん:2010/01/05(火) 15:08:49
>>874
後3年ぐらいでフリーで定番なのが2,3個出てくるだろう。
それ以降の4、5年以降はレイトレの方に移行するから、もうラスタ系のアルゴに金出すのはいなくなると思うよ。
881デフォルトの名無しさん:2010/01/05(火) 16:36:33
レイトレに移行なんて10年待っても起きねーよ。プギャー
10年後もOpenGLを使い続けているのはほぼ確実
882デフォルトの名無しさん:2010/01/05(火) 17:09:47
>>881
なんで移行しないの?
883デフォルトの名無しさん:2010/01/05(火) 17:17:36
ハイエンドでは確実に起こっているだろうが
俺はGLだろうなぁ・・・はぁ
884デフォルトの名無しさん:2010/01/05(火) 17:32:21
>>878
GLはあくまでコンテキスト上で動作するAPIで、グラフィックコンテキスト自体はOS依存
=コンテキストの有無を判断するのはGLでなくOSのする仕事

>>880
品質で言えばレイトレが無敵なのはわかる。だが世の流れは高品質<リアルタイムだし
技術還元を目指す研究所は今しばらくは現行のままでいくだろうね。
おまけにレイトレはもうネタが出尽くした感じで、進化するといえばレンダリング速度程度だろう
一方スキャンラインは拙いとこがあるからこそ、小細工で面白い事ができれば論文になるしな藁
ハードの革新があるまではGPGPU+プログラマブルシェーダが映画業界除いてシェア占め続けると思うぞ。
885884:2010/01/05(火) 17:52:24
気になって調べたが、
OpenCLやGLSLでレイトレ実装したケースもあるのな。
ttp://www.clockworkcoders.com/oglsl/rt/index.html

openglからレイトレに移行というより
これまでと同じ流れで
opengl拡張機能でレイトレ→ハードウェア対応→標準化ってopenglの機能として含まれんじゃね?
886デフォルトの名無しさん:2010/01/05(火) 17:58:14
これからしばらくはnVIDIAも言ってるハイブリッドレンダリングになるんだろうな。
ただnVIDIAのOptiXの動画見てるとリアルタイムレイトレーシングは5年後くらいにはハイエンドに降りてきそうな感じ。
887884:2010/01/05(火) 17:59:37
連投すまない。リンク先間違えてた
ttp://gpurt.sourceforge.net/DA07_0405_Ray_Tracing_on_GPU-1.0.5.pdf
888デフォルトの名無しさん:2010/01/05(火) 19:51:39
5年後は未だにff13程度だろうけど、10年後はレイトレの半リアルタイム・レンダリングになるよ。
10年前(1999年)はff7のポリゴンぐらいだったのが、ff13でほぼリアルタイムcgレンダリングになったでしょ。
ff13でもエフェクトでごまかしてるだけで低品質だなって感じはするけど、そろそろラスタ系アルゴの限界で今後は見た感じも含めて大きな進歩はないだろう。
889デフォルトの名無しさん:2010/01/05(火) 20:01:13
>>885
openglがレンダリング(ライブラリの集合)を目指すのか、directxと同じように統合プラットフォーム(マウスとかの入力や、audio,videoなど)を目指すのかによる。
昔のゼロックスやIBMみたいに企業が資本を出して研究所を作ればかなり進歩するだろうけど、今のように大学研究所(やnvidiaとか一企業)レベルならこの分野でもMS天国だろうと思うよ。
放射線スキャン技術とか医療用CTとか考えると国がこの分野に投資してもいいのかなって思うけど。
890デフォルトの名無しさん:2010/01/05(火) 20:52:29
CG板でやれば?
891デフォルトの名無しさん:2010/01/06(水) 00:48:38
三省堂本社に行ってもOpenGLの本が売ってないんですけど、どういうことですか?
DirectXなら何冊もあるのに…

マジレス求む
892デフォルトの名無しさん:2010/01/06(水) 00:50:59
取り寄せたら?
893デフォルトの名無しさん:2010/01/06(水) 01:04:58
>>892
いや、っていうか、そんなにOpenGLって下火なんですか???
小さい書店に置いてないのは仕方ないとして、
日本一の書店に置いてないっておかしいでしょう?
894デフォルトの名無しさん:2010/01/06(水) 01:15:03
担当が仕入れなきゃ入らないだけの話
スペースがかぎられてるんだから全部の本があるわけないだろ
あんたあたまおかしいの?
895デフォルトの名無しさん:2010/01/06(水) 01:22:58
おかしいのはお前のかーちゃんだろ
クズに育て上げやがって碌なもんじゃねぇ
896デフォルトの名無しさん:2010/01/06(水) 01:29:22
国立国会図書館でもあるまいし、日本一の図書館はすべての本がなけりゃおかしいってかwww
897デフォルトの名無しさん:2010/01/06(水) 01:30:05
わらいすぎてまちがえたww日本一の書店ねwww
898デフォルトの名無しさん:2010/01/06(水) 01:32:09
>>894
いやいや、売れるならどんな馬鹿担当だろうが仕入れるだろ?
あんた耳の穴から脳味噌垂れ(ry
899デフォルトの名無しさん:2010/01/06(水) 01:36:16
iPhoneにAndroid
Mobile界隈では大人気なのにな
900デフォルトの名無しさん:2010/01/06(水) 01:37:14
>>891
DirectXでopenGLに相当するのはDirect3D
openGLと一緒にDirectInput やDirectShow使ったっていいし、Direct3DXだって使えたりするのあるし。
あとDirectXってバージョン上がると廃止になったり関数仕様変わったりするからそのたびに売れるのかも
openGLは赤本1冊あればとりあえず大丈夫。だけどあれ高いからそんな在庫置かないのかもね

三省堂の本社って店舗なの?
901デフォルトの名無しさん:2010/01/06(水) 01:38:40
専門書ってバカ売れするような類の分野なのかねぇ
902デフォルトの名無しさん:2010/01/06(水) 01:40:05
>>897
書店? 出版社だろ?
903デフォルトの名無しさん:2010/01/06(水) 01:40:49
まずは、研究者やその筋のプロばかりがopengl apiを使うっていう発想から抜け出したほうがいい。
904デフォルトの名無しさん:2010/01/06(水) 01:42:05
は?
905デフォルトの名無しさん:2010/01/06(水) 01:42:34
>>900
ありがとうございます。
ああ、赤本ですか。古いヴァージョンのならPDFで持ってます。
なるほど、あれ(の最新ヴァージョン)さえ手に入れればいいんですね。
DirectXはそんな事情があったんですね。
三省堂の本店と言った方がよかったですね、もちろん店舗です。
906デフォルトの名無しさん:2010/01/06(水) 07:25:51
というかOpenGLの本って最近発売されてない。
非常に読みにくい赤本か、床井先生の本ぐらいでしょまともなのは。
確かにモバイルでは頑張っているが……
907デフォルトの名無しさん:2010/01/06(水) 14:48:57
初心者です。
OpenGLをはじめるには、GLUTを使うのが普通なんでしょうか?
また、ある程度なれた場合はどういったものを使用しますか?

参考HP等の紹介をお願いします。
908デフォルトの名無しさん:2010/01/06(水) 15:17:49
GLUT使うという手もあるけど、最近ならC# (VB) + OpenTKでOpenGLはじめたほうが、Visual StudioのIntellisenseも効いてて効率的にアプリケーション作れるから覚えやすいかもしれない。
まぁOpenGLの情報はC++とかが多いから若干C#とOpenTKに向けて読み替える必要があるが。
909デフォルトの名無しさん:2010/01/06(水) 15:30:15
>>907
ずっとGLUTでオーケー。それで困ることになったらその時に考えればいい
910907:2010/01/06(水) 15:34:33
OpenTKはC#のみ?ですか・・・
当面はGLUTでいきます。どうもです。
911デフォルトの名無しさん:2010/01/07(木) 18:48:09
OpenGL2.0にかなりゲンナリしています
一人でコツコツ組む人に取っては、また1からあの複雑なアーキテクチャを
おさらいするのは、物凄く茨の道に見えてしまいます。
glbigen()〜glend()が無くなると、途端に不安になります。
時間ばっかり喰っちゃいます。
どんな薬を飲んだら良いですか?
912デフォルトの名無しさん:2010/01/07(木) 18:58:46
PCの電源切るだけで治るよ
913デフォルトの名無しさん:2010/01/07(木) 19:09:36
なんでglbeginなくなるの?
代わりにシェーダとか勉強しろってことらしいけど
シェーダ使ったのサンプルでもglbeginとか使って立方体作ったりしてるし
わけわかめ
914デフォルトの名無しさん:2010/01/07(木) 20:41:05
前より憶えるべきAPIが減った
でも前より色んなことができる
もうそれでいいじゃないか
915デフォルトの名無しさん:2010/01/07(木) 20:44:46
glBegin .. glEndの代わりになるのはgl*Pointerなんかの頂点配列。
この変更はESでは実施済み。

なんでこうしたかと言うと、
・プログラマのミスあるいは悪意によってglBeginを2度連続で入れるといった例外が消せる
・マルチスレッドにしたときにアトミック操作の範囲が明白になる
・単純に関数の呼び出し回数が減って速度が上がる
といった理由から。
916デフォルトの名無しさん:2010/01/07(木) 21:24:13
>>914
サンプルがいっぱいあれば不満はでなくなると思うよ。
917デフォルトの名無しさん:2010/01/07(木) 22:13:54
>>913
glBeginとかのイミディエイトモードは廃止された。
頂点情報は全て頂点配列、VAO、VBOのどれかで転送する。

シェーダー使ったサンプルでglBeginとかを使ってるのはOpenGL2.0/2.1だろう。
glBegin等は3.0で廃止予告、3.1で完全廃止されたが、3.2では前方互換コンテキストでのみサポートされる。
918デフォルトの名無しさん:2010/01/08(金) 11:28:18
void postMultiply (Transform transform)

と言う関数の説明が

Multiplies this transformation from the right by the given transformation.

となっているのですが、これは現在の変換行列をT、引数の変換行列をT'とした場合、

M = T'T
M = TT'

のどちらを意味してるのでしょうか???
OpenGLでpostなら T'T のような気がするのですが、英語的には TT' ですよね???
919デフォルトの名無しさん:2010/01/08(金) 12:01:30
M = TT' で良いようです。ありがとうございました。
920デフォルトの名無しさん:2010/01/08(金) 12:10:22
何のライブラリか知らんが、
DirectXと同じように座標ベクトルを横ベクトルとして扱って
行列をベクトルの右からかけるという流儀で説明しているんだろうね。
921デフォルトの名無しさん:2010/01/08(金) 12:23:39
いや。慣れるとそっちの方がむしろ自然に思えてくるよ。
922デフォルトの名無しさん:2010/01/08(金) 12:35:58
俺はDirectXの流儀が不自然だとは一言も言っていないが。
923デフォルトの名無しさん:2010/01/10(日) 01:53:08
FBOに対して描画を行う際、
書き込み先アルファ値が書き込み元アルファ値で描かれてしまうのですが、
これを、もともとの書き込み先のアルファ値を保持しての描画を
行うことはできますでしょうか?
924デフォルトの名無しさん:2010/01/10(日) 10:10:21
>>923
FBOに限らずそうだと思うけど、glColorMaskか、
使えたらglBlendFuncSeparateで書き込み制御するのはどう?
925923:2010/01/10(日) 13:48:29
>>924
ありがとうございます。
glBlendFuncSeparate初耳でした。
ググってみたら、英語ドキュメントしか見つからなかったので、
これから読みほどいてみようと思います。

glColorMaskも試してみます
926デフォルトの名無しさん:2010/01/11(月) 00:25:55
glBlendFuncSeparate はちょっと古いカードだと使えないし、
なんか癖があるというか使いにくかった気がする。

glColorMask の方が素直でいいと思う。
927デフォルトの名無しさん:2010/01/11(月) 23:37:02
void
polarView( 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に切り替えると考えるとどういったソースになるのでしょうか?
928デフォルトの名無しさん:2010/01/12(火) 00:56:52
原点ではなく、その関数を使った時点での座標系に対して「distance下がって視点を動かす」変換がかかる。
LookAtの直後くらいで呼べばいいんじゃない?
929デフォルトの名無しさん:2010/01/12(火) 12:03:35
lispからOpenGL使えばいいや
stalinなら速度も気にならないし
問題はstalinの吐くcコードが読めない
930デフォルトの名無しさん:2010/01/13(水) 18:22:03
glGenBuffers()が使いたいのですがインクルードするヘッダーファイルがわかりません。
OpenGL標準なのでGL/gl.hだけでいけるはずですが、コンパイラにないと怒られます。

OpenGLのバージョンは多分3.2です。
OpenGL renderer string: GeForce 8500 GT/PCI/SSE2
OpenGL version string: 3.2.0 NVIDIA 190.42
931デフォルトの名無しさん:2010/01/13(水) 18:29:11
GLEWでも使え
932デフォルトの名無しさん:2010/01/13(水) 18:31:41
>930
/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

ここら辺を参考に
933デフォルトの名無しさん:2010/01/13(水) 19:45:01
glew.h をインストールしたら無事見つかりました。ありがとうございました。
でも何でOpenGLの標準機能が変なライブラリ入れないと使えないの。おかしくね
934デフォルトの名無しさん:2010/01/13(水) 20:09:18
>>933
MSがサボっているから。
935デフォルトの名無しさん:2010/01/13(水) 20:11:30
ドザならNVIDIA OpenGL SDKとか入れりゃいいじゃん
結局glew入ってるけど
936デフォルトの名無しさん:2010/01/13(水) 20:23:38
MSはopenGLやる気あるんですか?
937デフォルトの名無しさん:2010/01/13(水) 22:05:12
GL使ったことのない馬鹿?
938デフォルトの名無しさん:2010/01/14(木) 09:20:48
>>933
Windowsならglew入れなくてもwglGetProcAddress使えば関数を持ってこられるよ。
glewは最新の拡張が追加されてから対応するまでに時間がかかるからなぁ…。
939デフォルトの名無しさん:2010/01/14(木) 14:34:51
Advanced Usage嫁カス
940デフォルトの名無しさん:2010/01/15(金) 00:55:11
DirectXみたいに
Vector3やmatrixをクラス化して
openGL用(float型)に適したライブラリ(もしくはヘッダファイル)
って何かありませんか?
941デフォルトの名無しさん:2010/01/15(金) 00:59:24
LGPL
942デフォルトの名無しさん:2010/01/15(金) 11:37:49
>>940
D3DX
943デフォルトの名無しさん:2010/01/15(金) 12:58:54
OpenGLをDirectX3D相当にしてくれるライブラリありませんか。いや真面目に
944デフォルトの名無しさん:2010/01/15(金) 13:06:49
WineD3Dとか?
945デフォルトの名無しさん:2010/01/15(金) 13:52:59
D3DX相当ってこと?
みんな自家製ライブラリを持ってる気がする
946デフォルトの名無しさん:2010/01/15(金) 16:44:17
自前で持ってない俺はどうすれば……
ちょっと公開してくれません?
947デフォルトの名無しさん:2010/01/15(金) 18:17:40
D3D知ってるならその通りに作れば良いだろ
948デフォルトの名無しさん:2010/01/15(金) 18:21:23
恥ずかしいからやだw
他人ライブラリで良いのならhumus氏のFramkeworkとかは
949デフォルトの名無しさん:2010/01/15(金) 18:23:15
↑のは>>946へのレスです
950デフォルトの名無しさん:2010/01/15(金) 23:38:59
>>946
bulletの中のvectormathライブラリはどう?
bulletからは分離されているし、スカラ版もSSE版もある。

http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=&f=&t=1322
951デフォルトの名無しさん:2010/01/16(土) 01:45:17
Ogre3Dでも使えばいいんじゃね
952デフォルトの名無しさん:2010/01/16(土) 01:46:52
そうですか...
953デフォルトの名無しさん:2010/01/16(土) 10:17:43
自分で作れないものを扱えるとは思えないなあ
954デフォルトの名無しさん:2010/01/16(土) 10:41:20
極論バカ登場w
955デフォルトの名無しさん:2010/01/16(土) 10:44:17
なにこの粘着?ww
956デフォルトの名無しさん:2010/01/16(土) 10:47:17
頂点データの設定って
glBufferDataとglVertexAttribPointerにもあるんだけど
どういうこと?
957デフォルトの名無しさん:2010/01/16(土) 11:08:24
そういうこと
958デフォルトの名無しさん: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)?です。
何が間違えているのでしょうか。
959デフォルトの名無しさん:2010/01/17(日) 12:22:19
ライト使わずglColorで描画すればそのポリゴンは見えることは確認してるのかな

予想
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
960デフォルトの名無しさん:2010/01/17(日) 12:37:09
それ真上からじゃなくて真下からじゃね。
あと法線の設定をしなければならない。
961958:2010/01/17(日) 13:08:29
法線の設定(glNormal)をしてませんでした!
あとどうもライトの方向が自分の理解と逆らしい。
w=0を指定するとx,y,zの方向を照らす平行光源になる、で良いんですよね?
(0,-1,0,0)がy軸上から下。
何か+ーが逆っぽいのですが。
962デフォルトの名無しさん:2010/01/17(日) 13:27:59
ライトのポジションはwで割られるから、wに0を指定するとxyzで指定された方向「からの」無限遠光源となる。
gluLookAtの最後の3つの引数でy軸の上方向を視界の上方向としてるんだから、ライトのポジションには0, 1, 0, 0を指定することで四角形の上空にある光源になる。
963デフォルトの名無しさん:2010/01/17(日) 13:35:23
POSITIONだからな?DIRECTIONではない。
964958:2010/01/17(日) 13:52:10
あーようやくわかりました。床井先生の本では
"「w=0」であれば(x,y,z)方向の平行光線の設定になります。"
って書いてあったとです。床井先生……
965デフォルトの名無しさん:2010/01/17(日) 14:49:17
こりゃ〜ゆかい
966デフォルトの名無しさん:2010/01/17(日) 15:21:06
もうすぐ新スレの季節だけど、
>>1のテンプレの関連サイトの3DLabsはそろそろ成仏させてあげて
967デフォルトの名無しさん:2010/01/17(日) 20:05:29
C# + Tao Frameworkで3Dプログラムを作ろうとしています。

3Dモデルを読み込みたいのですが、環境依存を避けるために、OpenGLでは
3Dモデルの読み込みを標準でサポートしていないらしく、
色々検索してみたのですが情報が見つかりませんでした。
どういう手段を取ればよいのでしょうか?
968デフォルトの名無しさん:2010/01/17(日) 20:09:46
>色々検索してみたのですが情報が見つかりませんでした。

ダウト。
969デフォルトの名無しさん:2010/01/17(日) 21:46:18
>>968 ウソつくなよw
手軽に使えるライブラリは世の中に存在しないので自作するのがセオリー
ただまともな仕様があるファイルフォーマットはないので素直に諦めるのが一番良い。
970デフォルトの名無しさん:2010/01/17(日) 22:02:15
たかがモデルの読み込みを、諦めるのが一番ってw
971デフォルトの名無しさん:2010/01/17(日) 22:30:56
モデルの読み込み探して情報が見つからないっていうのはないだろ。
適当にググっただけでも色々と情報が出てくるけどな。
972967:2010/01/17(日) 22:40:37
>>971
見つかったとしてもXNAやDirectX用だったり、C++用だったりと、
かすってるだけで惜しいものばかりでして……。
GLSharpは人気のようですが、Windows専用らしいのでよろしくありません。
(どうせWindows用にするのならSlimDXを使います)

C++用のものをC#向けに書き換えるという手もありますが、
3Dモデルを読み込むプログラムの長さは相当なもので、
かなりの手間がかかるのでできれば避けたいです(どうしてもほかに手がなければ検討します)。
973デフォルトの名無しさん:2010/01/17(日) 22:51:07
もうDirectXかC++にしちゃえよ
974デフォルトの名無しさん:2010/01/17(日) 23:05:00
>>972
C#のは確かにないわ。でも元々OpenGL自体、C#のサンプルなんてOpenTKやTao以外ではほとんど見れないんだから、C++のを読み替えて勉強するだろ?
975デフォルトの名無しさん:2010/01/17(日) 23:16:41
所詮OpenGL
素直にDirectX使おう
976デフォルトの名無しさん:2010/01/17(日) 23:24:05
DirectXってWindows限定じゃん
977デフォルトの名無しさん:2010/01/17(日) 23:32:36
ああっ,ごめんなさい.
978デフォルトの名無しさん:2010/01/17(日) 23:42:05
LinuxでもDirectX入れれば動くんじゃなかった?
979デフォルトの名無しさん:2010/01/18(月) 00:05:56
COLLADAあたりありそうだけど無いのかな
980デフォルトの名無しさん:2010/01/18(月) 00:26:55
C#自体MS製だからなぁ
981デフォルトの名無しさん:2010/01/18(月) 00:44:30
VBならMS製といえなくもないが、C#はMS製ってわけじゃないぞ
982デフォルトの名無しさん:2010/01/18(月) 02:52:26
ステンシルバッファについて、良いサイトを教えてください。
983デフォルトの名無しさん:2010/01/18(月) 06:05:08
モデルのファイル形式とかそれね、xml系のプログラム組める人がそのうちいいライブラリ作ってくれるから。
それまでは独自のアプリ(関係ないけどphotoshとかautocadとか)やopengl,directx向け専用ライブラリでやるのがいいよ。
java系の優秀な開発者たちが携帯関係で必要だからデスクトップの方に目を向けだしているから、3年後ぐらいには汎用性高いのがいくらか出てくると思う。
984デフォルトの名無しさん:2010/01/18(月) 09:37:23
下手くそな釣りだなぁ
985デフォルトの名無しさん:2010/01/18(月) 10:07:43
>>984
君の方がつまらんわw
986デフォルトの名無しさん:2010/01/18(月) 13:09:32
結局C#とOpenGLで3Dモデルの読み込みできねーのか
987デフォルトの名無しさん:2010/01/18(月) 20:08:12
そんな事より次スレのテンプレ作ろうぜ。
NVIDIAやATIのサイトは抜かして、
必読書とかチュートリアルへのリンクを張ろう。
988デフォルトの名無しさん:2010/01/18(月) 20:26:01
よし頑張れ
989デフォルトの名無しさん:2010/01/18(月) 20:27:03
よし埋めるぞ
990デフォルトの名無しさん:2010/01/18(月) 23:19:07
C#でもモデルの読み込みはできるだろうが、それをやってて尚且つ皆に公開している人がいないだけ。
991デフォルトの名無しさん:2010/01/19(火) 04:06:34
>>986
3Dモデルっていろいろあるし、それぞれがかなり複雑、ってことは知らないんだろうな。
3Dプログラムって馬鹿にはできないよ。君には無理。あきらめな。
992デフォルトの名無しさん:2010/01/19(火) 07:27:50
考えてるやつが馬鹿だから複雑になっちゃうんだよ
993デフォルトの名無しさん:2010/01/19(火) 08:01:40
994デフォルトの名無しさん:2010/01/19(火) 09:55:08
あんまり晒してやるなよ
995デフォルトの名無しさん:2010/01/19(火) 19:29:45
スレ建て失敗。
以下に>>1を次スレの1を貼るから誰か頼む。
996デフォルトの名無しさん:2010/01/19(火) 19:31:14
クロスプラットフォーム 3D API OpenGLに関する話題を扱うスレッド。

禁止事項
・「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/
997デフォルトの名無しさん: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/
998デフォルトの名無しさん:2010/01/19(火) 20:19:07
== 過去スレ ==
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 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/
   メタセコイア、だと思うのだが使った事がないので知らない
999デフォルトの名無しさん:2010/01/19(火) 20:19:34
俺はどちらでもいい。
1000デフォルトの名無しさん:2010/01/19(火) 20:52:02
1000get
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。