09/07/12 06:55:24
クロスプラットフォーム 3D API OpenGLに関する話題を扱うスレッド。
禁止事項
・「OpenGL終了」系のまず価値否定ありきの主観発言(客観的な懸念要素を挙げた上での建設的議論は可)
・学歴・理系か文系かに関連する差別発言
・その他の荒らし全て
これらは付き合うだけ無駄なので無視しましょう。
- 前スレ -
OpenGLスレ Part12
スレリンク(tech板)
- 関連サイト -
URLリンク(www.opengl.org)
URLリンク(www.mesa3d.org)
URLリンク(developer.nvidia.com)
URLリンク(www.ati.com)
URLリンク(developer.3dlabs.com)
- 過去スレ -
Part11: スレリンク(tech板)
Part10: スレリンク(tech板)
Part 9: スレリンク(tech板)
Part 8: スレリンク(tech板)
Part 7: スレリンク(tech板)
Part 6: スレリンク(tech板)
Part 5: スレリンク(tech板)
Part 4: スレリンク(tech板)
Part 3: スレリンク(tech板)
Part 2: スレリンク(tech板)
Part 1: URLリンク(pc3.2ch.net) (dat落ち)
2:デフォルトの名無しさん
09/07/12 06:56:54
- 関連スレ -
OpenGL 2.0 専用スレ
スレリンク(tech板)
くだすれOpenGL(超初心者用)
スレリンク(tech板) (dat落ち)
- 各社のOpenGL拡張対応状況-
nVidia
URLリンク(developer.nvidia.com)
ATI
URLリンク(mirror.ati.com)
- その他もろもろリンク集 -
URLリンク(www.nbrains.net)
3:デフォルトの名無しさん
09/07/12 06:57:48
- 補助ライブラリ -
■OpenGLコーディングの補助
・glew URLリンク(glew.sourceforge.net)
OpenGL拡張の利用を簡便に。
■数値演算ライブラリ
・CwMtx library URLリンク(www.xs4all.nl)
行列、ベクトル、クォータニオンの演算ライブラリ。LGPL。
・Matrix, vector and quaternion library 2.0 URLリンク(www.programmersheaven.com)
配布ページの記述によれば無償で使えるらしい。ライセンスは未確認。
C++のメタテンプレート技法を多用しているので高速。APIとしての形も非常にシンプル。
・MathGL++ URLリンク(sourceforge.net)
行列、ベクトル、クォータニオンなどの各種演算用ライブラリ。APIはOpenGLライク。LGPL。
■マルチプラットフォーム化・イベントやサウンドなどのハンドリング
・SDL URLリンク(www.libsdl.org)
定番。数多くの関連ライブラリが開発されている。現在のバージョンでは描画とイベントハンドリングを分離できないため、
描画がもたつくとイベント処理ももたつく。ライセンスはLGPL。
・Allegro URLリンク(www.talula.demon.co.uk)
サポートしている機能、対応OSともにSDLに似ている。日本語資料は少ないが、Gift-wareという位の寛大なライセンスが魅力。
・GLFW URLリンク(glfw.sourceforge.net)
キーボード、マウス、ジョイスティックなどのイベント処理、タイマ、マルチスレッド辺りのみをシンプルに抑えたマルチプラットフォームライブラリ。
サウンドやその他は他のライブラリと組み合わせたい場合は、こちらの方が競合などの問題が無く安心か。
・Java+jogl URLリンク(jogl.dev.java.net)
OpenGLのJavaバインディング。現在のSun JavaVMがC++に肉薄した演算パフォーマンスを発揮している今、
Javaの豊富な標準ライブラリやSwing・Java2Dと連携できる事も考えると、今後はダークホース的選択肢に?
4:デフォルトの名無しさん
09/07/12 06:58:48
■サウンド
・OpenAL URLリンク(www.openal.org)
3Dサウンドライブラリ。マルチプラットフォーム。DirectXゲームでもサウンドはこれを使っているものも。MacOSXでは標準で入っている。
■その他
・OpenSceneGraph URLリンク(www.openscenegraph.org)
シーングラフライブラリ。
・freetype URLリンク(www.freetype.org)
ビットマップフォントやベクタフォントのレンダリングを行うライブラリ。
■フォント描画
・FTGL URLリンク(homepages.paradise.net.nz)
Freetypeを利用したもの。マルチプラットフォーム。アウトラインフォント対応。日本語が使えるかは未確認。
■物理エンジン
・ODE:Open Dynamics Engine URLリンク(ode.org)
オープンソース物理エンジン(GPL or BSD-Style License)
5:デフォルトの名無しさん
09/07/12 06:59:34
850:デフォルトの名無しさん :sage:2009/06/26(金) 01:22:49
毎年恒例の、課題提出時期の質問ラッシュな予感!
6:デフォルトの名無しさん
09/07/12 11:53:22
>1
乙
7:デフォルトの名無しさん
09/07/12 12:42:30
>>5
テンプレかwww
8:デフォルトの名無しさん
09/07/13 01:41:59
glMultMatrixf では float [16] なのに、GLUT の vvector.h では [4][4] なのが辛いなあ
9:デフォルトの名無しさん
09/07/13 01:50:32
そんな内部ヘッダを中途半端に流用するから悪いんだろ
MULTMATRIXマクロでも使ってろってこった
10:デフォルトの名無しさん
09/07/13 02:39:39
>>8
vvector.hなんて知らないけど、これじゃだめ?
glMultMatrixf( &(matrix[0]) );
11:デフォルトの名無しさん
09/07/13 03:24:34
>>10
それも良いけど、行と列の取り方が違うから、一度行列を転置させなきゃいけなくて、
些細なことだけど、結局手間は変わらないんだよね残念ながら
なんで GLUT 付属のマクロでOpenGLと扱いが違うのか謎
12:デフォルトの名無しさん
09/07/13 03:54:45
うっへ、自己解決したスマソ
計算の順番変えれば良いだけだよな……
13:デフォルトの名無しさん
09/07/13 03:58:21
というか回答を鵜呑みにするならglMultTransposeMatrixで足りるはずだが
14:デフォルトの名無しさん
09/07/13 11:02:17
ごめ、そんな関数が有るって今知った
ホントスレ汚しスマン
15:デフォルトの名無しさん
09/07/13 12:56:32
前スレの終盤にくらべたら、水滴が落ちた程度のことだ。
16:デフォルトの名無しさん
09/07/15 02:16:47
URLリンク(ruffnex.oc.to)の解説を見ながら
URLリンク(ruffnex.oc.to)を弄ってますが
2点ばかりわからない点があるので教えてください。
1点目:
このままのソースではX軸周りは回転を行わず平行移動だけなので、
display()の中で、直前の回転方向を保存しておき、RotateCube()の
第5引数に渡してみたところ、一応回転するようにはなりました。
しかしよくみると、X軸→Z軸→X軸と回転させると面の色の変化が
おかしなことになってしまいます。
これはどう考えて解決するべきでしょうか?
2点目:
現在接地している面の色を知るためにはどう考えて解決するのが
一番効率的でしょうか?
17:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/07/15 12:43:45
>>16
移動回転するなら行列演算のが簡単で、元ソースみたいな頂点を自力で変更する方法はあまり良いとは言えないんじゃないかな
もちろん調べてるだけってならかまわんけど。
glRotate*やglTranslate*で移動回転して、ワールド欲しければMODELVIEW等をgetすればいいし。
接地が一番下向いてる面ってことなら法線とY軸との内積が最小(-1)ってやるのがてっとり早いような
19:デフォルトの名無しさん
09/07/15 21:35:44
glewを使ってマルチサンプリングでアンチエリアシングをしようとしているのですが、
うまくいきません。それで一つ質問があるのですが、以下のURLの一番下のサンプル
URLリンク(www.codesampler.com)
では、GetDC→ChoosePixelFormat→SetPixelFormat→wglCreateContext→wglMakeCurrent
という通常の手順でカレントのレンダリングコンテキストを設定した上でglewInit()を呼んで
GLEWを初期化しています。
そしてwglMakeCurrent(NULL, NULL)→wglDeleteContextといったんコンテキストを削除した上で
wglChoosePixelFormatARBを実行し、
再度GetDC→SetPixelFormat→wglCreateContext→wglMakeCurrent
とカレントのレンダリングコンテキストを設定しています。
サンプルがやろうとしていることの意味は理解できるのですが、
他のサイトにはSetPixelFormatは同じウィンドウに対して一度しか呼べない、という記述もあります。
上記サンプルでは2度呼んでいるのですが、これは間違っているのでしょうか。
それとも「同じウィドウに対して一度しか呼べない」というのは
「同じDCに対して一度しか呼べない」という意味でしょうか?
20:デフォルトの名無しさん
09/07/16 15:25:23
>>19
どのみちそのサンプルでは同じDCに二度SetPixelFormatしてるね。
wglがらみの問題はOSで挙動が異なることが多々あるから動くならいいやというスタンスしかない気もする。
今回の件は、最初のコンテキスト生成のためにダミーのウィンドウとDCを臨時で作って、
用が済んだらすぐ削除してはどうだろうか
21:デフォルトの名無しさん
09/07/16 20:49:55
glPolygonOffset( factor, units ) でポリゴンのスクリーン Z 座標にオフセットを
加えることができますが、OpenGL の仕様書には
オフセット値 = m * factor + r * units
と書かれています。
このときの r は implementation-dependent constant と書いていますが、この値を
取得したり計算する方法はあるでしょうか?
22:19
09/07/16 21:25:41
>>20
どうも。ダミーのウィンドウを作る線でやってみようと思います。
話しは変わるけれど、テンプレの>>4のFTGLは日本語(ワイド文字)使えるよね。
23:デフォルトの名無しさん
09/07/16 22:36:03
>>22
FTGLはワイド文字で日本語いけますね。速いし簡単だしでとても便利。
ただ、フォントファイルに MSGOTHIC.TTC みたいなフォントコレクションを指定すると、
face indexが指定できないせいで等幅かプロポーショナルかとか選択できなくて困るんですよね。
指定できるようにするのなんて簡単だと思うんですが、なんでそうなってないんでしょう・・・。
(もし指定する方法あったら教えてください)
24:デフォルトの名無しさん
09/07/17 19:53:54
>>23
うーん、FTGLはよく使うけど等幅の選択みたいなことはしたことないというか
そういう関数は見あたらないなぁ。
25:デフォルトの名無しさん
09/07/18 08:20:51
opengl 初心者ですが、
visual studio で作成したGUIからの入力でopengl での描画を更新したいんですが
可能でしょうか?
26:デフォルトの名無しさん
09/07/18 11:08:06
可能です。
27:デフォルトの名無しさん
09/07/18 11:42:01
どうやって?
28:デフォルトの名無しさん
09/07/18 11:43:30
openGLプログラムと、GUIプログラムのプロセス間通信で
やったけど、できれば一つのプログラムで行いたいのですが。
29:デフォルトの名無しさん
09/07/18 11:50:23
Windowsのプロセスって、自分と通信できないんだっけ?
30:デフォルトの名無しさん
09/07/18 12:34:12
>>28
スマンが質問の意味が判らない。
OpenGLプログラムって何のことを指してる?
GUIアプリでOpenGLを使うだけだと思うのだが。
31:デフォルトの名無しさん
09/07/18 12:52:20
わからない人はだまっててください。
32:デフォルトの名無しさん
09/07/18 13:08:45
そして
実際にコンパイルできるソースを書いてくれませんか?
だな
33:デフォルトの名無しさん
09/07/18 13:35:31
>>30
GUIアプリのプロセス内でGLコンテキストを持つウィンドウを作るのが常套手段だよなあ。
34:デフォルトの名無しさん
09/07/18 14:19:21
GLUTとか使ってると面倒かもね。
35:デフォルトの名無しさん
09/07/18 15:20:09
またいつものキチガイだろ。スルーしろよ。
36:25
09/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:デフォルトの名無しさん
09/07/18 19:01:55
>>36
GLUT使わずに自前でコンテキスト作成すればいいじゃない
38:デフォルトの名無しさん
09/07/18 19:16:54
>>36
なんでプロセス間通信とか、わざわざ面倒臭い道を選ぶんだよwwww
と言いたいところだけど、自前でGLのコンテキスト作るのも慣れないと面倒だからねぇ。
えーと、そのGUIのプログラムとやらに、GL用のウィンドウを追加するのが早いと思うよ。
ただ、GLUTを使わないでやることになるので色々と追加でお勉強が必要になる。
まずはGUIプログラムとは別に、Win32API(&wgl)で簡単なOpenGL表示テストアプリを
作ってみることをオススメする。それをGUIプログラムに持っていけばいいかなと。
「OpenGL win32api」とかでぐぐれかす。
39:デフォルトの名無しさん
09/07/18 19:27:28
GLUTつかうとこういう罠があるからねぇ。
かといって、コンテキスト云々もWinでOpenGLが目的じゃないんなら余計な手間だし、
GLUTに依存してるコード書き直すのも面倒だと思うんで今のままでいいんじゃないかな。
40:デフォルトの名無しさん
09/07/18 19:27:53
>>36
なんでもいいならAntTweakBarが楽だよ
41:デフォルトの名無しさん
09/07/18 20:07:34
GLUTをVisual Studio 2003 でやっているんだけど
オートコンプリート等のインテリセンスが機能しないから
効率が悪いんです
2008 Expressだとオートコンプリート機能はつきますか?
もしくはオートコンプリート機能を追加する方法はありますか?
質問がひどければ謝ります
42:デフォルトの名無しさん
09/07/18 20:21:58
VS2003でも2008でもインテリセンス動くでしょ?
ただ、2003も2008もたまに機嫌を損ねるのか、インテリセンス動かなくなるけど。
あれ全然分かんないんだよなー。なんで動かなくなるのか、
動かなくなったらどうすれば回復するのか・・・。
43:36
09/07/18 20:27:13
アドバイスありがとうございました。
そうですか。GLUTから変えるしかないということで。
今のプログラムはとりあえずこのままで使っていって、
別のopengl プログラム作るときにはコンテキスト作成するようにします。
AntTweakBarも楽に出来るなら見てみます。
44:デフォルトの名無しさん
09/07/18 20:28:33
>>25
GLUTを使わないで自分でGLコンテキストを作る、
openGLに対応したGUIを使う(MUIからQtまでいろいろ)
ダイアログボックスにしてopenGLとは分離してしまう
とかかな
>>40
前スレで知ってちょっと見ただけだけど、AntTweakBarはGLUTと相性悪くね。
openGLのモデル描画を変更があったときだけ再描画したいときとか困るし
45:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/07/19 14:13:05
わからない人はだまっててください。
47:デフォルトの名無しさん
09/07/19 14:17:53
>>45
「.net openGL」でググっただけでいかようにもなりそうだが。
日本語でも英語でも。
48:デフォルトの名無しさん
09/07/19 14:20:48
>>47
おおう。ホントだ! しかも何コレ簡単だし楽そうだなぁ。
今度小さなテストアプリ書くときは.Netでやってみるか~。
>>46
w
49:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/07/22 23:22:53
GL_CULL_FACEの意味をちゃんと調べたほうがいい
51:デフォルトの名無しさん
09/07/22 23:22:55
カリングやってるからじゃね?
52:49
09/07/22 23:59:57
>>50,51
ありがとうございます。
そこは確かに怪しいのですが、カリングOFFでも状況変わらずでした。
たとえば、辺の長さ1の立方体を、Z軸の真ん中で分断するような面↓を作り、
GLfloat vert[] = {
0.0f, 0.0f, 0.5f,
0.0f, 1.0f, 0.5f,
1.0f, 1.0f, 0.5f,
1.0f, 0.0f, 0.5f
};
GLfloat texPoints[] = {
0.0f, 0.0f,
0.0f, 1.0f,
1.0f, 1.0f,
1.0f, 0.0f
};
glBindTexture(GL_TEXTURE_2D, someTexID);
glTexCoordPointer(2, GL_FLOAT, 0, texPoints);
glVertexPointer(3, GL_FLOAT, 0, vert);
glDrawArrays(GL_QUADS, 0, 4);
とでもしてみて、立方体から北側となる{0.5f, 0.5f, -2.0f}辺りの視点
から上記のvert面を確認します。すると立方体の南面、東面、西面を裏側から
観る事になるのですが、この時、南面と東面の裏側にだけ、意図しない
黒いポリゴンが表示されるのです。分断面そのものは期待通りに描画されます。
どなたか似たような経験をされた方がおられれば、と思って質問しました。
53:49
09/07/23 00:11:48
すみません、話が飛躍してしまったので追記といいますか、補正です。
そもそも最初にこちらで質問したかったのは、
「画面内に意図しない黒いポリゴン面が描画される原因」でした。
それで、よく見てみると、その変な黒いポリゴン面が描画されるのは
「透明部分を含むテクスチャ」を使用している面(の背後)でした。
テクスチャ画像の透明部分から、当然、向こう側が透けて見えるわけですが、
その向こう側には別のテクスチャの裏面が描画されているわけです。
そこで、その遠いテクスチャの裏返しが描画されているのなら納得できるのですが、
見えているのは真っ黒なポリゴン面でした。それで>>49のような質問を
させて頂きました。
>>52で書いたのは、そういった話をすっ飛ばして、
透明テクスチャの周囲で描画がおかしくなる、という現象の説明でした。
説明が飛び過ぎてよくわからないですね。すみません。
54:デフォルトの名無しさん
09/07/23 06:00:21
透けるの透けないの、黒いの白いの東西南北、さっぱりわからん
ゴチャゴチャ言ってないで、うまくいかないシンプルなプログラムを丸ごとどっかにupしろ
つか、課題なら授業中に講師に聞け
55:デフォルトの名無しさん
09/07/23 08:30:12
ただの描画順の話でないの?
透明とか半透明を含むポリゴンは奥から手前の順番になるように描かないとだめだよ
56:デフォルトの名無しさん
09/07/23 08:48:28
光が当たらないと真っ黒になるよね
57:49
09/07/23 09:12:53
皆さんありがとうございます。
>>54
結構巨大なソースになりつつあるので、全体をアップするとは考えても見ませんでした。ちょっと時間を用意して、できる事なら該当箇所を切り出して見ます。本当にもう、課題だったら先生に聞けて楽なのですが……。ありがとうございました。
>>55,56
そのあたり、あまりきちんと理解せずに組んでいるかもしれません。特に透明が絡んだ時の描画順については全く意識していなかったので、調べて見ます。ありがとうございました。
58:デフォルトの名無しさん
09/07/23 18:31:23
前スレで外部モジュールのnvoglnt.dllでエラーが発生する件で質問をしていた者です。
問題が解決したので、ご連絡します。
===状況===
GLUTを用いてマルチウィンドウを実装したソフトを動かしていると、不定期なタイミングでnvoglnt.dllでエラーが発生する。
問題のモジュールが呼ばれる順序が
kernel32->glut32->opengl32->nvoglnt
となっていた為、問題箇所を特定することが出来ず、デバッガーで追うことが出来ない(追う方法を知らない)
===問題点===
複数のウィンドウを連動させる為に、
「dispAの描画が発生したらdispBの描画も行う」
という処理を実装する際に以下のようなコーディングを行っていました。
59:58
09/07/23 18:32:29
何かのデータ処理を行う関数(){
/* データ処理を記述 */
/* dispAの描画を実行 */
dispA();
}
dispA(){
glutSetWindow( dispA );
/* dispAの描画処理を記述 */
・・・
glutSwapBuffers();
/* dispBの描画を実行 */
dispB();
}
dispB(){
glutSetWindow( dispB );
/* dispBの描画処理を記述 */
・・・
glutSwapBuffers();
}
dispAの描画を行う箇所が複数存在していて、ソースを簡略化するために
上記のようにdispA()の中でglutSetWindow( dispA )を実行するようにして、
dispAを呼び出したい場所ではdispA();と一行記述すればいいようにしていました。
この記述方法だと、何かのデータ処理を行う関数()が実行されると強制的にdispA()が実行されてしまうのが問題で
下記のようにglutPostRedisplay();をコールすることで描画タイミングをハードウェアに任せるように記述することで問題が解決しました。
60:58
09/07/23 18:33:24
何かのデータ処理を行う関数(){
/* データ処理を記述 */
/* dispAの描画を実行 */
glutSetWindow( dispA );
glutPostRedisplay();
}
dispA(){
/* dispAの描画処理を記述 */
・・・
glutSwapBuffers();
/* dispBの描画を実行 */
glutSetWindow( dispB );
glutPostRedisplay();
}
dispB(){
/* dispBの描画処理を記述 */
・・・
glutSwapBuffers();
}
前スレが見えなくなってしまったので、アドバイスを頂いた方の番号が分からないのですが、本当にありがとうございました。
61:デフォルトの名無しさん
09/07/24 19:31:37
glutについて質問したいのですが、あまりにもレベルの低い
内容なので、ここで質問して良いものか迷っています。
glutに関して初心者が集うようなスレッドはありますか。
あれば紹介して欲しいです。なければここで質問させてほしいです。
62:デフォルトの名無しさん
09/07/24 19:35:48
ここでどうぞ
63:デフォルトの名無しさん
09/07/24 21:59:33
>>62
早いお返事ありがとうございます!
どの程度説明すれば伝わるか分からないのですが、とりあえず…
1.x,z軸に沿った平面を作りまして
2.その平面の上から平面に向かって垂直にスポットライトを当てまして
3.平面の光が当たっている部分が丸く明るくなっているのを確認しまして
平面は拡散反射にしているのに、何故かカメラを上に平行移動させると
丸く明るくなっているところが手前にずれてきて楕円になってしまうのです。
イメージ的にはカメラが上に上がるにつれてライトがこちらを向いてきている
ような…
因みに、カメラはライトの真上ではなくて斜めから向けてます。
長々と分かりづらい文章ですみません。
必要でしたらソースコードとか動画とか載せますんでお願いします。
私としては平面図形とライトが何故か別々の動きをしていて
それを何とかできれば…と思っているところです。
64:デフォルトの名無しさん
09/07/24 22:08:50
どう考えても必要だからまずソースうpれよ
65:61
09/07/24 22:22:50
>>64
それもそうですね。
見づらいでしょうが、よろしくお願いします。
#include <GL/glut.h>
GLdouble vertex[][3] = {
{ -0.5, 0.0, -0.5 },
{ -0.5, 0.0, 0.5 },
{ 0.5, 0.0, 0.5 },
{ 0.5, 0.0, -0.5 },
};
int face[4] = { 0, 1, 2, 3};
GLdouble normal[] = { 0.0, 1.0, 0.0 };
GLfloat light0pos[] = { -1.0, 5.0, 0.0, 1.0 };
GLfloat spotDir[] = { 0, -1, 0 };
GLfloat lightred[] = { 1.0, 0.3, 0.3, 1.0 };
GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 };
int flag_right = 0;
int flag_left = 0;
void display(void)
{
int i,j,k;
static double d = 0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
/* 視点位置と視線方向 */
gluLookAt(0.0, 6.0+d*d, 50.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
66:61
09/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:デフォルトの名無しさん
09/07/24 23:51:11
>>65
起動させてみたけど、ただ単にカメラを上げるにつれ、ライトとカメラのなす角度が小さくなってゆく訳で、
特に異常はないけど?
> 前にずれてきて楕円になってしまう
むしろ楕円だったのが真円に近くなってくるだろ、d増加につれ
68:デフォルトの名無しさん
09/07/24 23:55:11
どこでスポットライト?
ソースチラ見でわかんなかったから、ちょっとコード足したら普通に点光源で動いたが
ソース出すなら、めんどくさいから全部出したほうがいいんじゃね
PROJECTIONによっては楕円に見えるかもしんないし
69:61
09/07/25 03:31:13
>>67-68
ありがとうございます。
正常に動いてますか…
いよいよどこか勘違いしてる気がしてきました。。
以下、残りです。
void resize(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30.0, (double)w / (double)h, 1.0, 500.0);
glMatrixMode(GL_MODELVIEW);
}
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CCW);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightred);
glLightfv(GL_LIGHT0, GL_AMBIENT, lightred);
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 30);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spotDir);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.01);
}
70:61
09/07/25 03:34:16
void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN) {
flag_left = 1;
glutIdleFunc(idle);
}
else {
flag_left = 0;
glutIdleFunc(0);
}
break;
case GLUT_RIGHT_BUTTON:
if (state == GLUT_DOWN) {
flag_right = 1;
glutIdleFunc(idle);
}
else {
flag_right = 0;
glutIdleFunc(0);
}
break;
default:
break;
}
}
71:61
09/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:デフォルトの名無しさん
09/07/25 03:57:53
スクショみせてみ、何に不満なのか
73:デフォルトの名無しさん
09/07/25 04:03:18
やっぱライトの設定があったか
init()の中のGL_SPOT_DIRECTIONをdisplayのGL_POSITIONと同じ場所で
ライトの設定はgluLookAtの後でやらないとビュー座標になる
74:61
09/07/25 20:59:41
>>73
おお、直りましたありがとうございます!
座標、ベクトル関係は変換行列だとかの
影響を受けるということなのかな…。。
>>72
もう解決してしまいましたが、一応。
URLリンク(www1.axfc.net)
OpenGLスレのみなさん、お騒がせしてすみませんでした。
75:デフォルトの名無しさん
09/07/25 22:01:51
【科学】道路に軍手が落ちているワケ、名城大研究チームが突き止める[09/07/24]
スレリンク(hidari板)
76:デフォルトの名無しさん
09/07/28 19:07:26
ちょい質問
メインスレッドで描画してたプログラムの描画命令部分をスレッド化しようとしてる
それで描画命令部分をそっくりそのままスレッド化したら、
プログラム起動 -> 描画スレッド呼出(1回目) -> スレッド破棄 -> スレッド呼出(2回目) …
この呼出2回目以降描画されなくて困ってるんだけど、原因に心当たりないかな?
HDC、HRCの設定と破棄は描画スレッドでやってる
1回目は何の問題もなく描画されてるから、原因がさっぱりわからなくて困ってる・・・
77:デフォルトの名無しさん
09/07/28 19:21:11
>>76
まずはソース出せよ
78:デフォルトの名無しさん
09/07/28 19:57:52
エラーチェックしろよ
79:デフォルトの名無しさん
09/07/29 12:30:43
Google 3D ギャラリーの3DモデルをOpenGLで読み込みたいんですが参考になるページありませんか?
80:デフォルトの名無しさん
09/07/29 13:26:15
なんか藻前等凄いなw
OpenGLって文書があんま充実してないのに、よく生き残ってるよな。
以前はもっと使いやすいHOOPSとかいう3Dグラフィクスライブラリなんか
あったんだよ(すげー使いやすいかた)。
ほんと、このスレで得意げになってGLのコードすらすら書いてるヤシって
ただもんぢゃねー
81:デフォルトの名無しさん
09/07/29 15:31:49
HOOPSっておいおい……
82:デフォルトの名無しさん
09/07/29 18:30:17
LinuxやFreeBSDだとOpenGLしかないからな。
DirectXがあったところできもいので使わないけど。
ただOpenGLやDirectXにかわるスマートで見通しのいいAPIがあっても良いと思う今日この頃。
83:デフォルトの名無しさん
09/07/29 19:03:47
DirectX あの命名規則はなんとかならんの?
84:デフォルトの名無しさん
09/07/29 19:19:11
OpenGLやDirectXにかわる・・・幻と消えたFahrenheit・・・
どんなAPIになる予定だったのだろう
85:m9('v`)ノ ◆6AkAkDHteU
09/07/29 20:30:52
>>81-84
レスどうもです。
思うのはね、もうちっとMayaなんかとの連携がスムーズになっていても
よかったんじゃないかなぁ・・・って。
だって、モデリングして、それ取り込んで、それからコードづらづら
書くなんてさ、15年前のGLと大差無いんですもん。
Unityとかoolong(だっけ?)なんていう技術が生まれてはいるんだけど、
なんか使い肉そぉ。
EclipseとかVisual Studioとかの統合開発環境が
これだけ発達したんだから、もちっとOpenGL自体も他の技術との親和性を
高めて欲しい。PS3とかで3Dゲームばりばり作ってる人には、SCEが
フレームワーク準備してあげてるんでしょ?
そういうフレームワークがOpenGL自体に欲しいのよね。ホントこの状態で
ばりばりOpenGLのコード書く連中って神がかってるwお世辞ぢゃなくて。
86:デフォルトの名無しさん
09/07/29 20:37:52
フレームワークなんて探せばゴロゴロ出てくる。
個人の趣味レベルのものから商業レベルのものまでな。
使いこなせるかどうかは別として。
87:デフォルトの名無しさん
09/07/29 20:46:57
gltexsubimage2Dを使ってテクスチャの書き換えをして
オブジェクトに落書きみたいなことをしたいんだけど
この場合透明な色に書き換えることってできる?
88:デフォルトの名無しさん
09/07/29 20:47:47
よけいなことをしないのがopenGLのいいところ
だからこそ、それぞれの分野で足りないところは自分で補えるし、使いやすい。
つか、得意げになってとか神がかってるwとか、お世辞ぢゃなくてバカにしてんだろ?w
89:デフォルトの名無しさん
09/07/30 00:49:48
>>85
そりゃOpenGLはグラフィックス用のアセンブリ言語と呼ばれる位だから。
高レベルなことをしたいならそれなりのフレームワークを使えばいい。
有名どころではOpenSceneGraphとかOGREとか。他にも沢山ある。
90:デフォルトの名無しさん
09/07/30 01:01:52
>>87
ごめんなさい。質問読み返したらわけが分からなかったので再質問
テクスチャ貼ってる正方形のオブジェクトに真っ白のテクスチャを貼っている状態(この状態だと見た目は白の正方形)のものがある
ここで貼っているテクスチャをglTexSubImage2Dを用いて一部を塗り替える
塗り替えた部分を透明(オブジェクトの背景まで透ける)にするためにはどうしたらいいですか?
91:デフォルトの名無しさん
09/07/30 01:10:38
なんでアルファ使わないの?
92:デフォルトの名無しさん
09/07/30 02:00:06
>>91
アルファ値を設定しても反映されないんです
オブジェクトの色とか設定するときには反映されるんですが
gltexsubimageで大きさ1*1にして1ピクセル分の要素(RGBA)を設定してるんですがRGBしか反映されません
どんな原因があるでしょうか?
93:デフォルトの名無しさん
09/07/30 02:23:51
コードが間違っているんだろ
94:デフォルトの名無しさん
09/07/30 03:06:04
そもそもblendがらみの設定をしてない・おかしいとか、
texの大きさを2^nにあわせるのに失敗しているとか、
1ピクセル分の要素の元のメモリ側の配列と、glでテクスチャイメージとして送る際の設定が噛み合ってないとか
いろいろありそう
95:デフォルトの名無しさん
09/07/30 03:16:05
質問者は再現コードを提示すべき。
言ってることとやってることが違うのは良くあることだから。
96:デフォルトの名無しさん
09/07/30 10:22:37
アルファ付きのテクスチャフォーマットを指定してないとか
97:m9('v`)ノ ◆6AkAkDHteU
09/07/31 05:16:34
>>89
「ここがダメだよ、OpenGL >>85 補足」
いや、ほら、OpenGL と Open GL ESじゃはっきり言って別物だしさ、
だって、openシーングラフなんてOpenGL ESじゃ使えねーし。
なんか背後の設計思想が未熟だよ。俺だったら、もっと抽象度高めて
ESだろうが、バージョンが変わろうが、もっと透過度っつーのかな、
ともかく上手につくるね。
GLがポータビリティ高いなんて、大嘘だよ、絶対騙されるなよ。
もうJavaもObjCも、OpenGLと連携できますじゃなくて、自前のAPI設計
しろよ。やっぱできねーんじゃねーのかなw
98:デフォルトの名無しさん
09/07/31 05:25:41
>>97
> 自前のAPI設計
AGLのことか?
99:デフォルトの名無しさん
09/07/31 08:53:29
>>97
当然それぞれの仕様書は読んでるんだろうけど、気に入らないのはどの部分?
設計思想ってことは冒頭かな?
具体的におかしいとこ挙げてどう変わるべきか
書かなけりゃアンチが騒いでるだけにしか見えないよ
100:デフォルトの名無しさん
09/07/31 09:17:26
「6AkAkDHteU」で検索すると面白いよ!
101:デフォルトの名無しさん
09/07/31 11:21:11
>>97
ううん・・・一言で言っちゃえば、
6AkAkDHteUさんにとって必要なのはOpenGLではない
ってだけの話のような。
抽象度の高い、透過的なライブラリなら他にあるでしょ多分。知らんけど。
ちなみに自前のシーグラフライブラリは、ちょっと手直ししたらESでも
いい感じに動いたよ。全然複雑な事やってないから、てのもあるけど。
winからiPhoneにそのまま持っていけて、便利便利。
でもって今はGL2.1/ES2.0で動くシーングラフライブラリを一から組み直し中。
シェーダ中心になると、高レベルレイヤの組み方からして変わってくるから
GL1.x/ES1.xまで透過的に扱えるよう設計するのは、僕には難しかった・・・。
無理すればやれないことはないんだろうけど、手間の割に益無さそうだし。
102:デフォルトの名無しさん
09/07/31 11:50:54
要するに、OpenGLが何のために定められている仕様なのか、理解できてないってことだな
103:m9('v`)ノ ◆6AkAkDHteU
09/07/31 12:09:35
>>101
断言しる、藻前の技術力、相当なもんだ。
>>100と>>102については、もう「はぁ」って感じぃ~
プログラミングのパラダイムって変わったんだよ。簡単に言うと、
EmacsからEclipseへってことだ。
とにもかくにも、OpenGLのバージョン間での透過性だけじゃなくて、
他のツールとの透過性も意識しなきゃもう時代遅れよ。GLには
フレームワーク化の努力が決定的に欠けていた。
扱うためには、>>101みたいな技術力持ってなきゃいかんっつぅのは
もうAPIとして失格。
一言で言うと、3Dっていう概念を狭く取りすぎてるんだ。
もっと視野を広げて、シェーディング、モデリングを他のツールと
上手に連携しながら行う一つの環境っつぅか、パッケージの構築に
注力しなきゃいかん。
>>101はどうよ? おまえ、凄いけど、もちっと遠くを見てOpenGL批判できる
ぐらいでなきゃだめよ。つーか、お前ぐらいの技術力あるヤシにこそ、
そういう思想を身につけてもらいたい。
以上だ(一応、京大院卒)。
104:デフォルトの名無しさん
09/07/31 12:14:25
「6AkAkDHteU」で検索すると面白いよ!
105:デフォルトの名無しさん
09/07/31 12:19:09
フレームワークってのは枠にはまってるうちはいいが、
枠から外れることをする必要がでると途端に難しくなる
フレームワークはフレームワークでいくらでも存在してていいが、
OpenGLのようなハードウェアと直接対話するローレベルなAPIも選択肢としては欲しい
106:デフォルトの名無しさん
09/07/31 12:52:22
おまえら釣られすぎだろ
キチガイに構うなよ
107:デフォルトの名無しさん
09/07/31 14:00:31
てかシーングラフと3DCG関数群って
全然レイヤの違う話じゃないか。
何いってんだが。
108:デフォルトの名無しさん
09/07/31 14:11:10
病院行きだな。 俺もスルーしよっと。
109:デフォルトの名無しさん
09/07/31 14:28:58
夏だねっ!
110:m9('v`)ノ ◆6AkAkDHteU
09/07/31 18:32:51
>>107
スレ違いかもしらんが・・・・行くよ、サンロクマルで・・・
まじ倒すよ、プレステを。
111:デフォルトの名無しさん
09/07/31 22:18:38
>>103
ぜひそのフレームワーク実装してくれ。
OpenGLもDirectXも使わずになw
112:デフォルトの名無しさん
09/08/01 00:48:18
OpenGLを批判できる俺かっこいいまで読んだ
113:m9('v`)ノ ◆6AkAkDHteU
09/08/01 07:38:47
>>111
DirecXなんてさらに閉じた環境だな。オープン系なんて呼ぶなよ、ヴォケ。
まぁ、OpenGLの設計思想は完全な失敗だったね。
モデラーとの連携性悪すぎ、「動的スクリプティングの拡張」も無し、
OpenGL ESとのシームレスな継続性も酷いもんだ。
でもな、日本からこういった技術って生まれないよな。
>>105の言うハードウェアとの「直接対話」って、結構見落とせない部分で、
その点ぢゃOpenGLの功績は評価できるレベルだと思う。でも90年初期から
進化がなかったよ。
ちょっとさ、俺の言うことに反論できないんぢゃ、どの情報工学科からも
ドクターなんて絶対取得できないぜ。>ALL
114:デフォルトの名無しさん
09/08/01 07:43:27
OpenGLのポリゴンの上で動画(AVIとか)を再生したいのですが可能でしょうか。
参考になるコードありませんか。
115:デフォルトの名無しさん
09/08/01 07:59:11
>>113
>>1を読め。禁止事項全てに該当するのでお前は出入り禁止だ。
116:デフォルトの名無しさん
09/08/01 08:01:32
>>114
普通に出来る。
mplayerなどはOpenGLバックエンドがあるからそのコードでも参考に。
117:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/01 08:20:39
相手すんなよ
119:デフォルトの名無しさん
09/08/01 10:05:42
>>116
トン
NeHeも探してたんですがLesson35にもありました。
そのサンプルも見てみます。
120:デフォルトの名無しさん
09/08/01 12:08:36
>>113
設計思想を理解できてないくせに設計思想を語るのやめようぜwww
まず、仕様書を第一章から5分でいいから読んでみろ。
普通の英語力なら今お前が理解できていない内容について
すべてを物語っている一言に到達できるだろう。
お前が言っているのはお米をつくっている農家に対して
「これからはおにぎりだ、海苔がないなんて考えられない、
お米なんてつくったってダメじゃん、アハハ~」
といっているのと同じことだってことだ。
理解できたら自分のバカさ加減を認識してとっとと去ね。
理解できなかったら自分の理解力のなさを認識してとっとと去ね。
さて、これで俺もあらし認定決定だし、消え去るといたしますかなw
121:デフォルトの名無しさん
09/08/01 12:31:49
>>113
OpenGLってのは3Dソフトウェアから見れば最下層のAPIで、
3Dじゃないソフトウェアで言うなら、BIOSみたいなもんだよ。
APIやプログラミングモデル自体に不満(ステート変更が頻雑になるとか
バッファの扱いが面倒だとかシェーダの直行性が保てないだとか)があるなら
ともかく、そんな高レベルの話はOpenGLの範疇外だよ。
BIOSに対して「スクリプトで拡張できない!」とか言い出すヒトはいないでしょ。
(あ、でもBIOSがスクリプトで拡張できたら面白いナ・・・)
あと、ESとの継続性(?)って、具体的に何が不満なのかな。
全く同じソースコードが動くようにするなら、わざわざESなんて作る必要性が
無いわけで(笑)ある程度書き換えないといけないのは当たり前かと。
それよりも、API名やプログラミングモデルが共通なので今までのノウハウが
そのまま使えるというのが重要なんだと思いますが。
>>117
OpenGLとOpenGL ESの違いを、C++とアセンブラの違いに例えるのは
いかがなものかと・・・。
122:デフォルトの名無しさん
09/08/01 12:46:00
>>121
> (あ、でもBIOSがスクリプトで拡張できたら面白いナ・・・)
っ Extensible Firmware Interface
> API名やプログラミングモデルが共通なので
1.1赤本くらいしか読んでいなかった人は面食らったと思う。俺とか。
まあすぐに適応したけどラッパー類の構造はかなり書き直しが必要だったな。
OpenGLがC++だとしたらESは生Cくらいの印象かなあ。
123:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/01 15:04:19
>>123
俺はmacも使うからEFI搭載マシンを使っていることになるな。
かといっていじれないから恩恵は受けていないのだがw
2にすると一つだけ問題があって、PSPとかiPhoneみたいなハード側の制限が厳しい環境だと、
最適化が甘いと露骨にパフォーマンスを悪化させるという点ですかね。実際2をやるんだけどさ。
多分最適な方法はラッパ側でtypedefしちゃって対象ごとに切り替えちゃうことなんだけど、
Cは精度が落ちる暗黙の変換が緩いので想定外のバグを生む可能性は知っていないとならない。
125:m9('v`)ノ ◆6AkAkDHteU
09/08/01 19:41:09
>>117
先ず日本語ちゃんと使えるようにしような。その語学力じゃOpenGLは
ちとキツイだろ?
つぅか、おま、OpenGLの思想どころかエンジニアリングって何なのか
理解できてねぇつーか、理解不能なんだな。オタク工学部出身だと
したら5流大出だろ(俺、いちお京大院修了済み)。
俺はOpenGLがGLだった頃から知ってんだ。
言語は言語にとどまっちゃいかんのよ、その先へ行かなきゃ。Javaは
それで失敗したけどな。
OpenGLにはフレームワークっていぅ概念さえないぢゃん。だめだよ、
この程度ぢゃ・・・・はっきりいって駄作だ。
126:デフォルトの名無しさん
09/08/01 20:10:12
もう触れるなよ、約束だ
127:デフォルトの名無しさん
09/08/01 20:30:43
じゃね
128:デフォルトの名無しさん
09/08/01 20:31:57
> OpenGLがGLだった頃
何時だ
129:デフォルトの名無しさん
09/08/01 20:33:38
古参を気取るようなおっさんが「ぢゃ」とか使ってるのは気持ちが悪い。
130:デフォルトの名無しさん
09/08/01 20:34:13
>>452
死ね
131:デフォルトの名無しさん
09/08/01 21:02:39
>>125
おまえ、「フレームワーク」って言葉を最近覚えて気に入っちゃったみたいだけど
言葉の意味ちゃんと理解してる?w
OpenGLはグラフィックハードウェアの機能・構成に対するフレームワークとして
十分その役割を果たしているだろ。
あと、ここのスレの奴らがいろいろ教えてくれてるの、ちゃんと読んでるか?
読んでて>>125のレス出してるなら理解力0のバカ(関西における意味で)だぞ。
もう一つ、GLの頃から知っているって主張するのは、かなり前から知っているけど
なんにも理解できていないんですって主張しているようなもんだから、やめときなw
132:デフォルトの名無しさん
09/08/01 21:30:04
相手する奴も同罪
133:デフォルトの名無しさん
09/08/01 21:31:30
125がバカだとは思うが、openGLはフレームワークではないだろ。
べつにフレームワークが偉いわけでも、そうでないといけないわけでもないし
低レベルなステート操作なAPIだからこそ息が長く汎用性もあるとも言えんじゃね
134:デフォルトの名無しさん
09/08/01 21:42:34
そんだけ長い間この分野に関わっておきながら、いまだ機能の階層構造という
概念の理解に到達しない人間がいるということに驚かされる。
しかもそれでエンジニアリングを語るとか、一体どうなってるんだ。京大パネェ
135:デフォルトの名無しさん
09/08/01 22:00:39
京大修士が2chのスレでこれほど痛い書き込みをするほど余裕が
無いとはにわかに信じがたい話だ
136:m9('v`)ノ ◆6AkAkDHteU
09/08/01 22:02:05
>>134
いや、俺は京大学派に属してても、亜種っつぅかさ、系統図じゃ上のほうに
属してるんだ。
多いよ、APIだからどうのとかいってさ、言語ないしは計算機環境の
設計にまで思い至らない連中がさ。NECや富士通とかの技術者がその程度
なんだよ。
低レベルI/Oの処理とかさ、バカなこと言ってねぇで、もっと視野広げると
楽しいよ。ほんと。ま、無理だろうけど。
137:デフォルトの名無しさん
09/08/01 22:08:06
ここでグチグチ言われても鬱陶しいだけなんだが。
なにが気に食わないのかしらないが、自分で行動を起こせばいいだろ
138:デフォルトの名無しさん
09/08/01 22:13:58
136は134の日本語が理解できないようだ
139:デフォルトの名無しさん
09/08/01 22:33:42
京大院卒→ 京大院修了済み→ 京大学派
140:デフォルトの名無しさん
09/08/01 22:38:06
要は京大に喰い付いて欲しいんだろ。
学があるだのないだのみたいな。
お前ら好きだろそういうの、がんばれよ。
141:デフォルトの名無しさん
09/08/01 22:49:19
じゃあここで東大院CG系研究室の俺が颯爽と
142:デフォルトの名無しさん
09/08/01 23:09:36
じゃあ東工大院でCGとは全く関係無かった俺はひっそりと
143:デフォルトの名無しさん
09/08/01 23:32:58
学歴の話はスレ違い、そろそろ余所でやってくれ
144:デフォルトの名無しさん
09/08/01 23:39:16
赤本7版ひどいな
URLリンク(www.amazon.com)
145:デフォルトの名無しさん
09/08/01 23:56:04
>>141
ラジオシティ法の命名の件で愚痴る先生の研究室ですねわかります。
146:131
09/08/02 00:02:00
>>133
>openGLはフレームワークではないだろ。
うん、まあね。
「OpenGLのパイプラインの処理モデルをホストのシステムと協力して実現できる
ことがグラフィックハードウェアに課せられている」という意味で書いたんだけど、
これって現実的にはなんの制限にもなってないよねw
そもそもGPUなんてなくたってCPUに処理させちゃっていいってことなんだし。
まあ、バカをバカにしてみたかったバカの発言ってことでお許しくださいw
147:デフォルトの名無しさん
09/08/02 00:13:55
>>136 は >>129 に指摘されて言葉改めたのか?w
もうちょっと頑張れよwww
てか、お前何話してんの?OpenGLの話しようぜ。
148:デフォルトの名無しさん
09/08/02 00:38:58
>>145
いや、元自分の研究室の学生と結婚しちゃった新進気鋭の若手先生のとこかもw
149:デフォルトの名無しさん
09/08/02 01:19:18
何?>>136って>>134で対象となっている人間が自分だって気付いていないってこと?
スゲェな
150:デフォルトの名無しさん
09/08/02 01:51:46
>>141,145,148
こんなに東大のCG研の人間がいたらそりゃあ馬鹿は袋叩きに遭うわけだwww
151:デフォルトの名無しさん
09/08/02 02:36:17
ここでもう一人東大関係者登場。
東大は駒場の馬鹿のせいで全学2chへの投稿が弾かれているはずだ。
お前らフシアナも出来ないはずですよ! m9('v`)ノ
152:デフォルトの名無しさん
09/08/02 02:42:53
いあ、解除されてる。試しにふしあなしてみろ。
153:デフォルトの名無しさん
09/08/02 05:24:51
珍しく伸びてるから何かと思えば
154:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/02 10:12:15
なにこの街の遊撃手のCM
156:デフォルトの名無しさん
09/08/02 15:27:27
あの見事な車のCMのか
157:デフォルトの名無しさん
09/08/02 22:01:55
glReadPixelsとかglTexImage2Dとかを使う回数はやっぱり抑えたほうがいいの?
158:デフォルトの名無しさん
09/08/03 00:11:33
必要なだけやればいい。
他の方法で代替できるならそうしたほうが良い場合もある
159:デフォルトの名無しさん
09/08/03 00:21:10
>>157
可能な限り抑えた方がいいです
160:デフォルトの名無しさん
09/08/03 01:21:16
glDrawPixelsとテクスチャ付き矩形で比較すると、同時間で描画できるピクセル数が10倍以上違うのが普通。
Vista世代のオンボカードでもglDrawPixelsじゃ1フレームで画面の1/4程度(500x500)の面積しか描けない。
バスが細いネットブック向けだと200x200がせいぜいじゃないかな。
161:デフォルトの名無しさん
09/08/03 01:43:53
glDrawPixelsにはそれを使うのに適した時があるから、テクスチャ矩形と速度比較しても意味無い
てか、オンボカードってなに?
162:デフォルトの名無しさん
09/08/03 01:49:40
オンボカード失礼しました
まあ、基本的にはキャッシュすればいいものはキャッシュするに越したことはないということですわな
163:デフォルトの名無しさん
09/08/03 02:36:57
PBO使えばおk
164:デフォルトの名無しさん
09/08/04 01:35:53
OpenGL 3.2発表されたらしいね。Geometry Shaderも入ったとか。
これでAMDも言い訳できまい。さっさと実装汁。
165:デフォルトの名無しさん
09/08/04 02:15:22
質問です。
マルチテクスチャの機能を使って、4枚のテクスチャを混ぜようとしていますが、
2枚のテクスチャを混ぜることはできたものの、3枚以上を混ぜる方法が分かりません。
ググったりしてみたのですが、見つけたサンプルは2枚のものばかりでした。
どなたか、3枚以上のマルチテクスチャマッピングを教えて下さい。
シングルパスでできれば、さらに嬉しいです。
166:デフォルトの名無しさん
09/08/04 03:12:48
AMDまだGS実装してなかったのかよw
167:デフォルトの名無しさん
09/08/04 03:21:52
>>165
シェーダーで
使わなくてもできるだろうけど、個別の調整とかその後の拡張を考えたら、素直な実装はシェーダーの時代かと
168:デフォルトの名無しさん
09/08/05 01:45:45
>>165
2枚が出来るなら3枚でもできるんじゃね?
glActiveTextureのGL_TEXTURE0とかGL_TEXTURE1とかなってるところを
GL_TEXTURE2とかGL_TEXTURE3に増やして同じことやればいいだけ
ちゃんと2枚のサンプルを理解していればいけるはずだ
169:デフォルトの名無しさん
09/08/05 09:25:39
なんか今年はOpenGLに勢いが感じられるね。
170:デフォルトの名無しさん
09/08/05 19:21:28
main関数内のglutMainLoop();
に入ったらすぐにエラーか何かでプログラムが終了してしまいます。
何が原因なんでしょう?
下のようなメッセージが出ているのですが関係あるんでしょうか?
'C:\WINDOWS\system\glut32.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'C:\WINDOWS\system32\nvoglnt.dll' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
171:デフォルトの名無しさん
09/08/05 20:15:48
WebGLが面白そうだ
172:デフォルトの名無しさん
09/08/05 22:10:11
複数のパスを使ったシェーダーを記述するのに使う標準形式ってないんですか?
COLLADA FXというのがあるみたいですが、どういうものなのかよく分かりません。
自分のプログラムに使えるんでしょうか。
シェーダーを記述するのに使うツールって何使えばいいんでしょうか。
現在AMDのRenderMonkeyしか知りません。NVIDIAはFX Composerというのがあるみたいですが
HLSLのみで、GLSLは対応していなかった気がします。
173:デフォルトの名無しさん
09/08/05 22:59:21
Texture Unitが二つしかない環境で開発してるとか?<165
174:デフォルトの名無しさん
09/08/06 00:24:31
>>170
エラーか何かで終了するだけじゃわかりません。正常終了かもしれません。
そのメッセージは関係ありません。
>>172
特に標準形式といったものはない
とにかく複数のパス用のシェーダを通せばいいだけなので何でもいいとも言える
COLLADAでもいいけど読み込むのは結構面倒
GLSLじゃなくてCgでもいいならCgFXが読み込みは楽だよ
175:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/06 04:42:34
スクリーンの特定の領域だけをアップデートする方法はありませんか
177:デフォルトの名無しさん
09/08/06 04:47:14
glScissor()を使え
178:デフォルトの名無しさん
09/08/06 05:02:44
>>175
メモリーリークなどしません。原因は他にあるのでデバッグしてください
179:デフォルトの名無しさん
09/08/06 05:07:26
>>175
timer()が末尾再帰しているとでも言いたいのか?
そもそも末尾再帰なんて全く関係ない。普通にデバッグしろ。
180:デフォルトの名無しさん
09/08/06 06:45:58
おおかたDisplay関数あたりで肥大してんじゃねーの?
181:デフォルトの名無しさん
09/08/06 09:55:07
>>172
CgFXをVisualStudio用のHSLS記述アドオンのInteliShadeで書いてる。
今の所ソースの色分けと関数の折りたたみと組み込み型、関数のインテリセンスぐらいしか利かないけど、
3.2が出るのが待ち遠しい。
182:デフォルトの名無しさん
09/08/06 13:54:29
>>177
ありがとうございますだ
特定のピクセルに点を打ちたいときはどうすればいいんでしょう
pixelAt(int x, int y)
のような感じでスクリーンの左上からx,yの位置にあるピクセルに点を打ちたいのです
183:デフォルトの名無しさん
09/08/06 14:11:13
>>182
手っ取り早いのはglRasterPos+glDrawPixels/glBitmapの組み合わせ。
ただし基本的にはノース経由のバスで座標データがやり取りされるから、そこがボトルネックになって遅くなるのは確か。
すでに送ってあるテクスチャとかをpix to pixに書くには、
射影行列をロールバックしてorthoな射影で書いて、
その後射影行列を元に戻すといった操作が有効。
auxバッファに蓄積してglCopyPixelsを使うという手もある
184:デフォルトの名無しさん
09/08/06 14:12:54
>>182
glRasterPos2*()/glWindowPos2*()とglDrawPixels()でいける
glScissor()もそうだが、もうこういうことは全部シェーダーでやる時代なんだよな
185:デフォルトの名無しさん
09/08/06 17:48:24
>>183
>>184
glRasterPos2fとglDrawPixelsで動作を実現できました
ありがとー
186:デフォルトの名無しさん
09/08/07 20:59:18
GSLS ESにて、画像の2値化を
シェーダでやってみたいのですが可能でしょうか。
無知な初心者で申し訳ございませんが、
ご教授お願い致します。
187:デフォルトの名無しさん
09/08/07 23:29:00
二値化したい画像をテクスチャとしてバインド
ピクセルシェーダで二値化しつつ描画
でおk
188:デフォルトの名無しさん
09/08/08 09:21:54
>>187さん
ご回答ありがとうございます。
処理フローはなんとなくイメージできたのですが
"ピクセルシェーダにてニ値化する"点について
詳しくご解説して頂けませんでしょうか。
189:デフォルトの名無しさん
09/08/08 13:57:35
>>188
vec3 tcol = テクスチャから拾ってきた色;
if (どっちの色?(tcol)) (
gl_FragColor = 色1;
) else (
gl_FragColor = 色2;
)
ってやるだけ
190:デフォルトの名無しさん
09/08/08 14:48:54
>>189さん
ご解説ありがとうございます。
あとは、参考書片手にやってみます。
ご丁寧にありがとうございました。
191:189
09/08/08 16:23:07
ゴメン突っ込まれる前に一つ言い訳させて
ifの複文の{}が()になってるのは単なる打ち間違いデスorz
自分の使ってるキーボード、(){}[]が全て同じキーなもので(修飾キーで打ち分ける)
しかも古いCRTのフォーカスが甘くなってて打ち間違いに気付かなかった
もういい加減LCDに買い換えるか・・・
192:デフォルトの名無しさん
09/08/09 03:48:44
このスレではGSLSとかHSLSって書くの流行ってるの?
193:デフォルトの名無しさん
09/08/09 10:24:35
OpenGLでWebサイトを表示したりできないでしょうか。
ポリゴンの上にHTMLをレンダリングしたいのですが。
194:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/09 10:31:06
それ足すんじゃなくて引くべきじゃないか? aX + bY + cZ + D = 0なら兎も角
196:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/09 11:30:05
>>196
>>195のいうように、その場合の
平面の方程式は「aX + bY + cZ + D = 0」で
「aX + bY + cZ = D」が間違ってるんだろ。
しかし、>>196のコードは意味不明だなぁ。
198:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/09 11:50:53
>>198
おお、どうもありがとうございます。
Cの関数>>196で使っているtriangleは平面上にありますので、それで法線ベクトル[a, b, c]を算出してるんです。
すみません、>>198さんのおかげで理解できました。表裏判定してて、それで積が負になると平面通過判定合格なんでつね!
みんなありがとう!!!恥かいたけど、聞いてよかた。 ^^;
201:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/09 12:04:44
>>Cの関数>>196で使っているtriangleは平面上にありますので、それで法線ベクトル[a, b, c]を算出してるんです。
細かいことなんでスルーでいいんだけど、平面上の1点から法線は出せないだろ。
少なくとも3点無いと。
203:デフォルトの名無しさん
09/08/09 12:13:15
> float triangle[3]
こりゃ確かにおかしいなw
float triangle[3][3] とかしないと
204:デフォルトの名無しさん
09/08/09 12:18:02
>>202-203
みなさん、本当ご親切にありがとうございます・・・・
また、わからなくなってしまいました。ちょっと他のコードも調査してみます。
^^;
205:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/09 12:35:12
>>205
> float D = A + B + C;
ここでそうするなら
> return DOT(normal, againstLocation) + D;
ここでは引け
207:デフォルトの名無しさん
09/08/09 12:38:38
>>205
だね~。
で、あとは例えば、
その関数locationToPlane()に、againstLocationとして3頂点のうち1点を渡してみて
ちゃんとゼロが変えればOKだね。
208:デフォルトの名無しさん
09/08/09 12:40:26
>>206さん、どうもです。教科書、間違いだらけですね。 ^^;
しかし、>>205の問題ってGCC警告出してくれないんですもん。
209:デフォルトの名無しさん
09/08/09 12:45:49
それ書籍とかじゃなくて誰かの落書きじゃないのか?
210:デフォルトの名無しさん
09/08/09 13:39:46
>>205
でも、typedefさえしないのけ。
typedef struct {
float x, y, z;
} point;
openglってこういうことしねーよな。実行速度なんて変わらんよ。
readabilityっていう概念0だな。
211:デフォルトの名無しさん
09/08/09 13:42:26
そもそもOpenGLの話しじゃないからな
212:デフォルトの名無しさん
09/08/09 13:55:19
いや、openglのコードって、vertex扱うのもfloat[3]だろ。
けっきょく配列のindex使ってんだから、構造体使っても速度同じ変わらんって。
213:デフォルトの名無しさん
09/08/09 14:08:35
線形代数ライブラリは、車輪の再発明多いし
標準化してもらってもいいかもね。
つーかboost::ublasが以外に使いやすいんでお勧め。
matrix4x4程度で速度が出るのかはわからんが。
214:デフォルトの名無しさん
09/08/09 14:55:16
>>213
でもグラボ(OpenGL対応の)って、日本のメーカーもつくってんだからさ、
NECとか富士通(も?)、日本からこういう技術を発展させるような動きって
出てこないのかね。
東大を始め、CGの世界じゃ日本の研究機関ってプレーヤーでさえ無いんだよな。
215:デフォルトの名無しさん
09/08/09 14:58:24
>>213
線形代数ライブラリは、CPUのベクトルユニットを使う/使わないの判断が
個々人に委ねられるというのも大きいし、標準化はし辛いんじゃないかな。
それに、頂点列やピクセルデータは単なるfloat(とかbyteとか・・・)の配列である。
っていうのがOpenGLのポリシーであるように感じられる。
自分で作っても大した規模にならないし、面倒なら>>3あたりやboost::ublasを使えばいいし
ってことで、今後も標準化は無いんだろーなーと。個人的にも必要性を感じない。
あー、京大の人のコメントは要りませんよ。
216:デフォルトの名無しさん
09/08/09 15:15:04
使うときには普通に>>210みたいにするけど、openGLの仕様で決まってると不便じゃないかな
CやC++専用じゃないんだし
217:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/09 16:02:47
>>217
だめだだめだ、そんなんreadabilityゼロだ。
日本はCGの世界ぢゃ、全然相手にされてないんよ。
俺、素粒子の物理屋だけどさ、欧米のCG関連の学会出てごらん。
日本の論文なんて引用ゼロに近いし、なんかsiigraphなんかでも通過してる
日本人研究者の論文ってほんとお情けで通してもらったってのがミエミエ。
ひどいよ、特に曲線曲面の理論発展には日本人の寄与度ゼロだと断言できる。
>>215京大もこの分野ぢゃ東大と同じく、プレーヤーでさえないよ。
物理畑じゃお互い世界で認められてるけどな。
219:デフォルトの名無しさん
09/08/09 16:05:57
また変なのが釣れた……
220:デフォルトの名無しさん
09/08/09 16:09:32
東大 京大はNG推奨
221:デフォルトの名無しさん
09/08/09 16:12:46
またというか同じ人だろうな
222:デフォルトの名無しさん
09/08/09 16:14:21
GLには哲学が無いよ。設計者がシリコングラフィックス社っていう、糞ベンチャーの
先駆けにいた三流エンジニアだからな。
抽象化のなんたるかが分かってねーし、設計っていう概念もないからフレームワーク化にまで
頭が回らないつーか、お粗末で頭が回転しない。
それで日本だが、こんな出来損ないの技術を信奉してる連中が拡大再生産されてる現状を俺は
憂う。別に京大を棚に上げるわけぢゃないが、東大をはじめ、CG関係の教育がマジ貧しい。特に
高等教育がぜんぜんだめだ。GL学生に教えてイェーイ、マテマティカ大金出して(国立だと税金)買って
線分画面にさせるスクリプト学生に書かせただけで(しかも2Dで)イェーイなんての
ばっかだ。
CGの分野じゃ日本は完敗よ。数学力の問題だとネラどもは言うかもしらんが、そうじゃないんだ。
設計っていうのはな、つまるところ哲学・抽象的思惟能力に左右されるんだ。
物理屋の俺に指摘されてもハッとこない連中、特にNECやSCE、富士通、あと
ジャパネットたかたあたりで細々と開発してる連中、おまえらはプレやーでさえない。
223:デフォルトの名無しさん
09/08/09 16:16:16
じゃあスルーして、お前ら結局ベクトル型どうしてるの?
boost::ublasって固定長ベクトルできないよね? なんか無駄しちゃってる気がするんだよね。
224:デフォルトの名無しさん
09/08/09 16:17:37
コピペ乙
225:デフォルトの名無しさん
09/08/09 16:19:16
いや、物理屋に言わせるとさ、日本のCG関連の技術者・研究者、税金ドロボー
してんぢゃねーっつぅの!!!
まじで。
研究でCG関連の技術俺等も使うこと、多いんだけどさ、お前等マジ何してんだよ
って感じぃ。
226:デフォルトの名無しさん
09/08/09 16:27:36
>>223
3次元ベクトルは自作したのを使ってる。
227:デフォルトの名無しさん
09/08/09 19:23:11
皆さんに質問です。最近OpenGLを使って3Dのアプリケーションを作って
遊んだりしています。その過程で、グラフィック関係の記事やblogを見
てシェーダーというものがあるのを知りました。私はこれも興味をひか
れているですが、ネット上の記述や説明では私には理解できません。
シェーダーとは何のためにあり、どんなことができるのでしょう?
OpenGLでコードを描くよりも優れているのでしょうか?
228:デフォルトの名無しさん
09/08/09 19:37:57
>>227
調べたら普通に概念程度ならわかる気がするけど。
簡単に言えば、シェーダーを自前で書かない場合はOpenGL標準のライティングでしか絵を表現できないけど、シェーダーを自分で書くことによって自分好みのライティングにできる。(←これをプログラマブルシェーダーと言う。)
OpenGLに対応するシェーダーとしてはGLSL等があって、それらはOpenGLと組み合わされるものであって単独で何かができるものではない。
ここではライティングについて言ったけど、実際にはシェーダーの応用で2次元・3次元ともに様々な表現ができるようになる。
229:デフォルトの名無しさん
09/08/09 19:40:37
技術の外延が分かってないなあという意味では、
床井先生のところでバンプマッピングを静止画で出してたのは、あんま意味ないかなと思った。
「どの方向に光源があってもそれっぽいテクスチャが付く」ことが技術の肝だから、
光源に対して物体を動かしたときにこそ質感に大きな差が出るんだけどね。
230:デフォルトの名無しさん
09/08/09 20:15:23
>>227
まず、OpenGLのパイプラインアーキテクチャは分かるかな?
バーテックスシェーダは、「頂点単位の座標変換とライティング計算」を一般化したもの、
フラグメンテシェーダは、「フラグメントに対するテクスチャ適用」ステージを一般化したもの
なんだけど、上の括弧書きした部分が何を言ってるのか分からないようだと、シェーダの利点を
挙げても、???って感じになっちゃうと思う。
231:デフォルトの名無しさん
09/08/09 20:21:00
>>216
C以外でも使えるよう十分に低レベルなAPIにしたら、
逆にJavaでそのままのカタチでは使えなくなってしまったという罠ww
難しいもんだねぇ‥‥
あと放ったらかしになってる>>193
なんらかのHTMLレンダラで絵を作るとこまでいけば、それをテクスチャにして表示できますよ
‥‥ってもしかしてGLでHTMLのレンダリングそのものをやりたいって話?
232:デフォルトの名無しさん
09/08/09 21:21:21
GLSLで書いたシェーダプログラムって、
画面描画の際に勝手に動いているって解釈で会っていますか?
233:デフォルトの名無しさん
09/08/09 21:39:14
>>232
大体合ってるw
VSなら頂点一つずつ、FSならフラグメント一つずつごとに、
同じシェーダがそれぞれ動作するよ
234:デフォルトの名無しさん
09/08/09 22:00:09
>>233さん
ありがとうございます。
OPENGL ESで画像を表示しようとしたらglDrawPixelsが
サポートされてなくて困っています。
だれか解決案を教えて頂けませんか。
235:デフォルトの名無しさん
09/08/09 22:02:03
テクスチャを作って描画するしかないねぇ
236:デフォルトの名無しさん
09/08/10 01:19:06
>>228
>>230
ありがとうございます。ただ、正直???てな感じです。赤本読み直します。
237:デフォルトの名無しさん
09/08/10 01:21:49
>>235
むしろ、ESでないとしても、同じ画像を何回も表示するならテクスチャに貼ってVRAMにキャッシュしておくこと推奨だよな。
Orthoに戻すのが面倒ではあるが。
238:デフォルトの名無しさん
09/08/10 03:33:56
>>229
バンプの意味は「どの方向に光源があっても」じゃなくて、
「張られた面がどの方向を向いていても」それっぽい影がつくってことだと思うけど。
だから静止画でも立体に張ってれば効果はよくわかるからいいじゃんよ。
239:デフォルトの名無しさん
09/08/10 09:14:27
どちらにしろバンプマッピングはグリグリ回してみないと実感はしにくいね。
発展して視差遮蔽マッピングになってしまうけどDirectX SDKのサンプルにわかりやすいのがあったな。
OpenGLとしてもOpenTKのフォーラムに視差遮蔽マッピングのサンプルがあった。
240:デフォルトの名無しさん
09/08/10 09:34:45
鶏を割くに焉んぞ牛刀を用いん
241:デフォルトの名無しさん
09/08/10 20:33:34
尼で頼んでたOpenGL Library、発売日とっくに過ぎてるのに中々発送しねーなと思ってたら、
発送予定日が23日になったとかメールが来た。
夏休みに読もうと思ってたのにkonozamaかよ。
242:デフォルトの名無しさん
09/08/10 21:32:46
>>237
VRAMにキャッシュ?!
mallocのことでしょ?
なんか特別な操作するの?
243:デフォルトの名無しさん
09/08/10 22:17:00
URLリンク(alb.hp.infoseek.co.jp)
Depthしか使わない場合のFBOの設定の仕方が書いてありますが、
逆にColorしか使わないときはどうするんですか?
GeForce FXだとFBOは対応しているのにNPOTが未対応のようですが
これだと描画するときにテクスチャ座標の指定が面倒そうです
244:デフォルトの名無しさん
09/08/10 22:24:52
>>242
ええー‥‥。
237さんの言ってること‥‥分からないですか??
245:デフォルトの名無しさん
09/08/10 22:47:32
>>244
そんな意地の悪いこと言わなくても・・・
246:デフォルトの名無しさん
09/08/10 23:00:27
んあー。意地悪かったのだろうか。
ごめん、別にそういうつもりは無かったんだけど‥‥ちょっと、ビックリしちゃったもんで。
247:デフォルトの名無しさん
09/08/10 23:06:03
別に意地悪じゃないだろ。
glTexImage*()が何をするのかを全く理解していないようだから
しっかり赤本読んでおけ。
248:デフォルトの名無しさん
09/08/10 23:28:32
お前等、また同じ過ち犯してるよ。
木を見て森を見ずだ!
もっと視野ひろげようよ。
そんなどこのメモリに領域確保しようが、そんなこん抽象化して
使いやすくしとかんきゃ、そらもうAPIとして失格なんよ。
まぁ、OpenGL作った連中に頭が上がらんのが殆どだからな。
東大を始めCG関連、日本の技術は貢献度ゼロだ。よっておまえらの
程度が低いのも当然だな。
設計が何かってわかってないよ、設計とは何かが。
249:デフォルトの名無しさん
09/08/10 23:40:06
>>248
>>1を読め。荒らしはお断りです。
250:デフォルトの名無しさん
09/08/10 23:43:36
>>249
だからー。おかしな人に触れちゃダメだってばー。
どうせ何言っても無駄なの分かってるでそ?
251:デフォルトの名無しさん
09/08/11 00:42:52
ここまで自演
252:デフォルトの名無しさん
09/08/11 00:46:46
>>251
こいつが一番頭がおかしい
253:デフォルトの名無しさん
09/08/11 07:47:34
またバカが湧いているのね。
小学校の夏休みが終わるまでしばらくこんな感じか。
254:m9('v`)ノ ◆6AkAkDHteU
09/08/11 21:41:28
>>249-253
おまえら、結局思想的に、つーか哲学がねぇんだよ。
だからOpGLをありがたーく使ってりゃいいんだよ。
まぁ、NECや富士通の技術者なんてこの程度かこれ以下
なんだろうなw
哲学がねーよ、哲学が。
255:デフォルトの名無しさん
09/08/12 01:25:11
お、今日はコテがついたw
256:デフォルトの名無しさん
09/08/12 07:39:15
マウスで中のオブジェクトを動かすのってどういう方法がオススメですか?
257:デフォルトの名無しさん
09/08/12 07:40:00
>>256
ごめんなさい
マウスで中の→マウスで描画領域の中の
です
258:デフォルトの名無しさん
09/08/12 07:50:24
ピックアップでggrks
259:デフォルトの名無しさん
09/08/12 14:49:32
openglレベルだと「セレクション」じゃないかな?
私は使ったことないけど
260:デフォルトの名無しさん
09/08/12 15:12:40
というか沢山あるオブジェクトの中から一部だけをピッキングしたいなら
セレクションを使うけど、シーン内のオブジェクト全体をを回転/移動/
スケーリングしたいだけなら、virtual trackballが便利。適当にググれば
コードでも数式でも出てくると思う。
261:デフォルトの名無しさん
09/08/12 18:08:59
>>260
256-257からどっちの意味なのか読み取れないからメンドクセと思って
私はレスしなかったけど、あなたは親切だねぇ。
(ちょっと話それますよ)
セレクションて最初はすっごい便利なんだけど、段々アプリが成長して
構造が込み入ってくると、そのうち限界がくるんだよね。
そうなるとシーングラフが欲しくなってくる。というかシーングラフってほとんど
ピック処理とか当たり判定だけのために欲しい。(描画だけならSGイラネw)
‥‥が、シェーダ流行な昨今、シーングラフはバーテックスシェーダと相性が悪い。
(gl_Position = ftransform(); なシェーダなら問題無いですけど)
その辺うまくやってる方っていらっしゃいます?
当たり判定用オブジェクトは表示データとは別、って割り切るしか無いのかなぁ。
262:デフォルトの名無しさん
09/08/12 18:28:23
すまん。ピッキングの実装にセレクションが使われるものと
思ってるんだけど、あってる?
そういう考えで、「openglレベルなら」って書いたんだけど。
263:デフォルトの名無しさん
09/08/12 18:42:17
>>262
>ピッキングの実装にセレクションが使われるもの
ピッキングの実装にセレクションを利用することができる、という意味では合ってるし、
ピッキングの実装にセレクションを利用する必要は無い、という意味では間違ってるかな。
>>259の書き方には特に問題無いと思うます。
264:デフォルトの名無しさん
09/08/12 19:27:53
>>263
レスありがとう。
よく分かった。
265:デフォルトの名無しさん
09/08/13 17:02:01
windows XP、デュアルディスプレイ環境で
glutFullScreenでフルスクリーン化をしているんですが、
メインディスプレイでフルスクリーン化してしまいます。
サブディスプレイでフルスクリーン化したいのですがどのような方法がありますか?
266:デフォルトの名無しさん
09/08/13 18:36:47
>>265
FindWindow()かなんかでウィンドウハンドルをとってきて
SetWindowLongとかSetWindowPosで枠無しにしてサブディスプレイのフルスクリーンに合わせる
サブウィンドウのサイズはEnumDisplayMonitors()で拾ってこれるみたい
検証してないんでglutの内部で持ってるウィンドウ情報と実際のウィンドウがずれるからなんか問題おきるかも
大丈夫な気もするけど
267:デフォルトの名無しさん
09/08/13 23:58:10
AndroidでOpenGL ESの勉強始めたんだけど、
AndroidにはglRenderMode()がなくて、セレクションとか
フィードバックが使えないみたい。
OpenGL ESの1.0とか1.1ぐらいだと、
ピックアップする方法ってみんなどうやってるの?
268:デフォルトの名無しさん
09/08/14 04:12:53
>>266
おお、検証してみます
ありがとうございます
269:デフォルトの名無しさん
09/08/14 10:38:02
>>267
ピックは本来GLと関係無い処理なので、純粋に幾何学計算で交差判定をします。
一応、オブジェクトごとに固有の色(IDの代わり)でレンダリングしてglReadPixels()する
という方法も無いではないけど‥‥。
270:デフォルトの名無しさん
09/08/14 11:03:47
WinVista/C++でopenglモデル管理クラスDLLを作って、
その中でglGenLists(a)を呼び出すと常に0が返ってきて
しかもプログラムが落ちるという現象が起こってるんですが、
DLLだとopengl32.dllのスタティック領域にアクセスできないとかなんでしょうか?
271:270
09/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:デフォルトの名無しさん
09/08/14 12:15:46
glGetErrorの戻り値は調べた?
273:デフォルトの名無しさん
09/08/14 12:29:03
>>271
全然要所になってないぞ。どこでそのクラスをインスタンス化しているかが重要。
まさかMakeCurrentもせずにやってるとか言わないよな?
274:270
09/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:デフォルトの名無しさん
09/08/14 12:55:51
>>274
全然分かってないな。コンテキストが無いとdlistは作れない。
276:270
09/08/14 13:00:51
>>275
解決しました!
コンテキストのある間しかglにアクセスできないんですね・・・。
ありがとうございます!
277:デフォルトの名無しさん
09/08/14 14:09:34
>コンテキストのある間しかglにアクセスできない
当たり前だー!
って感じなんだけど、初心者的には結構罠だったりするね
そしていまだに、たまにやらかす俺様もダメぽorz
278:デフォルトの名無しさん
09/08/14 17:45:25
OpenGL ESでシェーダプログラムを組んでたんですが、
ベクトル型変数への加算をfor文で行ってたら、
シェーダプログラムが落ちちゃうんですが
仕様なんでしょうか?
以下のエラーメッセージが表示されます。
Expression: ("Buffer too small", 0)
ループの回数を減らすと落ちないんですが・・・
279:デフォルトの名無しさん
09/08/14 18:50:02
エラーの時にエラーメッセージが出てプログラムが停止するのは仕様じゃね。
デバッグすればいいじゃない
280:sage
09/08/14 19:11:40
>>278
ループできないハード/プロファイルでループしたら
ループは展開されてその分レジスタがいるよ
281:デフォルトの名無しさん
09/08/14 20:36:15
実行できる命令数に上限があるからじゃ?<落ちる
282:デフォルトの名無しさん
09/08/14 20:55:29
「Expression: ("Buffer too small", 0)」でググるとシェーダーとか関係なさそうなんだけどどうなんだろね。仕様かねw
283:デフォルトの名無しさん
09/08/14 23:49:14
ディスプレイリストをOpenGLコンテキスト間で共有していて、
共有しているはずなのに、
テクスチャの更新を行うとき有効になっていたコンテキストによって
glTexSubImage2Dが失敗するのは何故だ、と思っていたら
テクスチャのクラスで、glTexSubImage2Dする前にglBindTextureするのを忘れていた
のが原因だった。これのせいでどれだけ時間を無駄にしたか・・
284:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/16 23:48:39
>>229
マウスで動かせるんだけどなー
287:デフォルトの名無しさん
09/08/17 00:35:09
>>284
突き詰めればOpenGLの初期化手段が環境に依存するし
GLUTとかクロスプラットフォームのライブラリを使えば必ずウィンドウがおまけで付いてくる。
ある程度あきらめるか、複数の実装をコンパイルタイムとランタイム両方で切り替えるか、
要件満たしてない環境ではMesa使って下さいってことにするしかないよ。
>>285
> 普通glReadPixelsやCopyTexSubImage*はオフスクリーンレンダリングとは
言わないってことはないよ。バックバッファに書いてスワップせずにコピーするんだから。
288:デフォルトの名無しさん
09/08/17 03:56:59
コインに似ている形を作りたいのだけど
組み方がわかりません。
あとものを上下に動かすプログラムを教えてください。
289:デフォルトの名無しさん
09/08/17 04:13:15
まずコインを3次元スキャンして立体データを得るところから始めよう
290:デフォルトの名無しさん
09/08/17 07:13:09
OpenGLの勉強をしたいのですが、いい入門書を教えてください。
291:デフォルトの名無しさん
09/08/17 20:17:30
>>290 スレリンク(tech板)
292:284
09/08/17 22:36:40
>>285 >>287
あまり古い環境ではあきらめる事にします。Mesaなんてのがあるのは初めて知りました。
FBOがサポートしていなかったらpbufferとかを使うことにします。
ありがとうございました。
293:デフォルトの名無しさん
09/08/17 22:45:44
FBOだけでいいよ。使えない環境を見つけるほうが難しい。
294:デフォルトの名無しさん
09/08/17 22:49:01
OpenGLのレンダリングステートを全て保存して復元する方法ってないでしょうか。
何をしたいかというと、自分のプログラムに
他の人が作ったプラグインを使って拡張できる機能を付けたいんです。
でもそうしようと思うと、glEnable/Disableや行列の設定を変えたりしたせいで、次のプラグイン
の処理に影響が出ないようにする必要があります。初めはディスプレイリストを共有して
やろうと思っていたんですが、コンテキストの切り替えが思ったより高コストで無理でした。
20回ぐらいで10FPS程度に落ちます。
なので、Singletonを使い1つのコンテキストを全てのプラグインで共有するようにしようと思ったんですが、
レンダリングステートを保存/復元するプログラムを作ろうにも、
レンダリングステートを設定する関数が多すぎて把握し切れません・・・。
何か良い解決策はないでしょうか。
295:デフォルトの名無しさん
09/08/17 22:54:02
プラグインを諦める
296:デフォルトの名無しさん
09/08/17 23:10:11
どうせ優先度とか表示・非表示とかアプリ側からいろいろ指定したりしたく
なるので真面目にやるならコンテキストのラッパをプラグインに渡す
手を抜くならglPushAttribじゃね
297:294
09/08/17 23:17:55
手抜きしたいのでglPushAttribを使います。
MANページでPushで検索してみたら
glPushAttrib
glPushClientAttrib
glPushMatrix
glPushName
があるようですが、Nameはセレクションモード?で使うようなので使うのは上の3つだけですね。
298:デフォルトの名無しさん
09/08/17 23:23:25
プラグイン作成の手引きに、
「みんなのコンテキストです。変更した設定は元にもどしておいてください。」
って書いておけばいいんじゃね
299:デフォルトの名無しさん
09/08/17 23:39:53
ソレダ!
300:デフォルトの名無しさん
09/08/18 00:13:41
>>298
それは腐ったプラグインのデバッグやるはめになる死亡フラグだろ・・・
301:デフォルトの名無しさん
09/08/18 01:13:18
デバッグするのは「腐ったプラグイン」の作者じゃん
302:デフォルトの名無しさん
09/08/18 10:27:10
Listってモデルビュー行列のみなんでしょうか
Listでモデルとライティングは呼べる事は確認できたんですが
カメラ座標をListで登録して呼べないですかね?
303:デフォルトの名無しさん
09/08/18 10:47:26
いや、登録できるよ?
glMatrixMode切り替え忘れてるんじゃない?
304:302
09/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:デフォルトの名無しさん
09/08/18 11:29:48
ディスプレイリストは関数呼び出しを纏めてるだけだから、
登録時のアトリビュートがどうこうとかは関係ないよ。
特定の行列を変更したいならディスプレイリストの中でglMatrixModeを呼び出せばいい。
306:302
09/08/18 11:31:16
>>305
ありがとうございます、おかげで解決しましたm-_-m
307:デフォルトの名無しさん
09/08/19 02:58:29
Windows上の開発でOpenGLで3Dゲーム作る場合何言語が必要?
308:デフォルトの名無しさん
09/08/19 03:21:42
日本語
309:デフォルトの名無しさん
09/08/19 10:28:54
英語も
310:デフォルトの名無しさん
09/08/19 18:43:51
あと、スワヒリ語もやっとくと、いざという時に便利
311:デフォルトの名無しさん
09/08/19 19:14:31
つまんないレスしてないで、真面目に答えろよカス。お前のそういう所が嫌いだ
312:デフォルトの名無しさん
09/08/19 19:16:03
2ちゃんでまともな答えを期待する方が間違い
そもそもの質問内容からして馬鹿過ぎるし
313:デフォルトの名無しさん
09/08/19 19:23:08
ポリゴンの一部にテクスチャはるにはどうしたらいいんでしょう?
マジで助けて・・・
314:デフォルトの名無しさん
09/08/19 19:51:10
どうしてそんな悪い質問の典型みたいな質問をしてくるんだ...
315:デフォルトの名無しさん
09/08/19 19:52:24
OpenGL ESについて、ご質問させてください。
プログラマブルシェーダを使って、
指定した画像のエッジ強調などの処理を行っているのですが、
画像処理の結果を画面に描画しないことは可能でしょうか。
プログラマブルシェーダは画面描画契機で動作するので、
描画無しでプログラマブルシェーダによる画像処理は
不可能と考えているのですが・・・。