OpenGLスレ Part14
..
40:デフォルトの名無しさん
10/01/23 16:05:41
>>39
URLリンク(www.opencsg.org)
41:デフォルトの名無しさん
10/01/23 16:12:06
>>39 普通に考えて、OpenGL はグラフィクスハードウェアを叩く時に便利な
共通の仕様を持った、割りと低レベル寄りのライブラリ、っていう位置づけであって、
別に何でも出来る高級言語みたいな物じゃないからそういう、
何かのソフトウェアが実現するべき(=自分で実装するべき)高級な機能なんて
ある訳ないような気もする。
てか、例えば大きな四角面4枚(三角面8枚)のサイコロに対して、そこにそれより小さなサイコロを
当てて XOR しようとしたとき、頂点数は合計されるだけじゃすまないよな?
勝手に頂点数増えられても困る
42:デフォルトの名無しさん
10/01/23 16:22:04
>>40
自分のやってることができそうです!
用語を知らないと全然見つけられませんね。
ありがとうございました!!
43:デフォルトの名無しさん
10/01/23 16:41:05
>>41
君がOpenGLの仕様策定や技術のコントリビューターならそういう主張もいいだろう。
しかし、日常で君がやっていることといったら、OpenGLのその低レベルAPIとやらを使ったコーディングじゃないのか?
つまり君はGLの有用なライブラリを作っているわけでもコントリビュートしてるわけでもないんだから、各種ライブラリに依存しまくってコーディングしている初心者とあまり差はない。
44:デフォルトの名無しさん
10/01/23 17:05:29
>>43 は安価ミスだろうか
45:デフォルトの名無しさん
10/01/23 17:13:32
ただの文盲じゃねw
46:デフォルトの名無しさん
10/01/23 17:25:57
java,dotnetだと、人様がこしらえたライブラリをちょっと使えるようになったからって「自分スゲー」って思い込んじゃう奴が多い。
ニートとかゆとりとはまた違う種族のようだ(ある意味DQNとも言う)。
47:デフォルトの名無しさん
10/01/23 18:10:07
だがしかし全自動洗濯機が実用化されてスイッチポンで洗濯できる時代に、
超人的技能で桶と洗濯板でゴシゴシ洗濯できる人間がすごいとは思わないけどな。
確かに電気代もかからないしきれいに洗えるけど、今の時代には無駄なテクノロジーだよね。
江戸自体ならスーパースターだけど今の時代なら無能な趣味人。
48:デフォルトの名無しさん
10/01/23 18:14:05
>>47 どういう流れでそんな話をしてるのか全然わかんないんだが
>>41 の内容は、「ソフト側の都合で変わるような高級な処理はライブラリに含まれていないよ」
って主旨の発言なだけ。 なんか勘違いしてないか?頭悪いのか?
49:デフォルトの名無しさん
10/01/23 18:20:48
洗濯機こわれたときにどう行動するかってところじゃないの。
あと、洗濯機で洗えないものも扱えるか、扱えないか。
50:デフォルトの名無しさん
10/01/23 18:29:49
今の時代C+POSIXのみでプログラムしてる奴もいないし、WEBアプリ程度のクライアントをGTKみたくCだけで頑張っちゃうのもバカらしいって思う人は多い。
Cのみで頑張ってアプリを作ろうとしても、javaなら1/10の時間でWEBアプリなら1/100の時間で同じアプリが作れる。
つまりライブラリとしてモジュール化してjava,rubyなどでもAPIへのアクセスを容易にすることまでがOpenGLとかCG関係者の仕事。
そうじゃないといくら仕様が良くても使ってくれないし、いくら待っても人は増えずGLアプリも増えず、結局microsoftに行ってしまうだろう。
51:デフォルトの名無しさん
10/01/23 18:29:56
そもそも洗濯機をスイッチポンで使えるようにして提供する側だって意識ないのか。
52:デフォルトの名無しさん
10/01/23 18:35:08
ここは洗濯機の話と独り言を言うスレのようです
そんな事より、普段GLSL書くときどこまでシェーダに任せるべきだろう。
もちろん内容によるが、例えばラスタライザ的な処理をGPU側にするか、あるいは場合によっては
CPU側でテクスチャとして起こしてしまうかで時々迷う。
53:デフォルトの名無しさん
10/01/23 18:37:43
あ、>>52 は 「どちらでもいいけど、ライブラリ化する時の話」 ね。
Vertex Shader 上の情報が無いと激しく非効率だったり実現がしんどい場合は迷う必要ないから。
54:デフォルトの名無しさん
10/01/23 20:40:11
>>50
Java や ruby から簡単に使えるようにしてくれー
ボク馬鹿だからC++使えないしアルゴリズムもわかんないの
って言う人が世の中には大勢いるんだよね。
確かに需要はある。
>>52
GPUに渡すデータ量が少なくなるように選ぶな、俺だったら。
GPUメモリの上限がいまだに2GBなのはなんとかならんのか。足りん。
55:デフォルトの名無しさん
10/01/23 20:51:32
いまどき理由もなくC++(やD)を使ってるような奴はただの基地外だろうな。
56:デフォルトの名無しさん
10/01/23 20:53:52
どうせあれだろ。
「新しいテクノロジーを勉強するのは嫌だ〜」っていつの時代にもいる頭固いオッサンなんだろう。
57:デフォルトの名無しさん
10/01/23 21:01:29
良く知らんけどjavaやrubyからでもopenGLは使えるんじゃないの
openGLをラップしたりサポートしたりする便利ライブラリやフレームワークもあるんだし
openGLはそれらから呼ばれる描画限定ライブラリで十分
58:デフォルトの名無しさん
10/01/23 21:25:52
いや。
そういうことじゃないと思うよ。
openGLの低レベル関数を使った高レベルライブラリでアプリ開発ユーザーのこと考えた使いやすいのは今になってもまったく出ないよねってことだと思う。
59:デフォルトの名無しさん
10/01/23 22:48:34
もうちょっと要件を具体的にお願いします。
ぼんやりとした設計があるならばご説明願います。
実在するライブラリとの比較でも構いません。
DXのライブラリでも構いません。
洗濯機みたいな変な喩えは要りません。
痛い業界論みたいなのも要りません。
60:デフォルトの名無しさん
10/01/23 22:52:49
つまり、材料いれてボタンを押せば料理ができる電子レンジみたいなのが欲しいってことじゃね?
61:デフォルトの名無しさん
10/01/23 23:18:48
javaとかdotnetの世界で、ネイティブアプリの設計論とかWEBアプリのアレとかコレとかを勉強したほうがいいと思うよ。
巨大ライブラリの設計論すらもそっちの世界では既に完成されてるから。
opengl1.2のころから使ってますっていう干からびたオッちゃんじゃ石頭だから多分理解できないだろうけど。
62:デフォルトの名無しさん
10/01/23 23:24:03
多分、普段高級言語しか使っていなくて、C/C++みたいなローな言語が理解出来ず
逃げ出したクチで、そんな中、アプリケーション寄りのお手軽便利な何でも機能みたいな物は無いよ、
というレスを どういう訳だか 曲 解 し て、自分の正当性を訴えなければ収まらない気分になり、
(自意識過剰)
ここはム板のスレなのに大上段に構えて的の外れた業界論とか語りだしちゃって、
(技術は無いがプライドは高い、というオッサンに多い傾向)
「俺はお前よりも上の存在だ」 という空気を醸し出そうとするも、周りをポカーンとさせてしまい、
もう元には戻れず、しかし元々自己中でKYでもある為か、一人で満足行くまで
勝手に話しだし、頭の悪い長文書いても読まれずスルーされるだけなのにそれにも
気づけない低脳中学二年生が、
二度とやってこないようなスレを作るにはどうしたらいいでしょうか。 これが要件になります
63:デフォルトの名無しさん
10/01/23 23:31:45
仮にライブラリを作ったとしても、61みたいなクズには使わせたくないな、
と本気で思う。
64:デフォルトの名無しさん
10/01/23 23:32:17
GNUみたいに既にあるものを再実装するって言うので十分だと思うよ(大昔だと車輪の再発明は悪だとか言ったりしていた)。
例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装するとか、少なくとも低レベルAPIをIDEのサポートもなく(それもCで)ゴニョゴニョするのはただの禿げたマゾか露出狂の変態だろうね。
別にCでシコシコできなくはないが、よく考えてみればコーディングの大半の時間は、IDEの自動ジェネレーションで十分なことにほとんど費やされていると思うよ。
よっぽどの理由がない限り、大昔のwin32apiなんかを直接使ってる人はほとんどいないだろうけどそれと同じ。
今はopenglじゃないほうをやってるからこれといった要望はないけど、開発スタイルが未だに猿の惑星レベルなのは驚いた。
65:デフォルトの名無しさん
10/01/23 23:34:19
>>62
顔真っ赤にして何いってんの?このオッサンは(笑)
66:デフォルトの名無しさん
10/01/23 23:34:43
みんな同じ世界にいるわけじゃないんだから、それぞれいいようにしたらいいがな
openGLが必要なら使えばいいし、いらないなら使わなきゃいいだけだろ
67:デフォルトの名無しさん
10/01/23 23:39:47
使うとしても低レベル過ぎて使いづらいってのは、opengl関係者のやる気をまったく感じられない。
68:デフォルトの名無しさん
10/01/23 23:40:14
結局、開発速度と実行速度のバランスや、バグがどこまで追跡できるか、あたりで決まると思う。
昔、他人のライブラリを使っていて、自分のバグかライブラリのバグか判別困難で苦労したから、
出来る限り自前で作るようにしてる。
69:デフォルトの名無しさん
10/01/23 23:55:23
>>65
お前 >>43 だろ。文意が読めない辺りよく似ている
70:デフォルトの名無しさん
10/01/24 00:09:10
>>64 最初の2行を読み直して、ん???と思ったんだが、なんかあれか?遠まわしに
「自分はDirectXに慣れているから、誰かOpenGLをDirectX風にしてくれ。俺の為にそうしてくれ」
って言っているように見えた。 いやむしろ …なになに風、と言うよりもっと直球に、
「ソースレベルで DirectXと相互入れ替え出来るようにしてくれ。」 と言っているかのようにも見える。
もしもそうなら、Windows限定だとでも思ってるのか、あるいはMSに言え。
またDirectXでシュガー巻いたOpenGLなんかあったとしても、そもそも意味無いだろwww と気づけ
あと、もしも趣味でなく、仕事で使う用がある環境の場合には、少なくとも自社ライブラリくらい作ったり増えたりしてるから
一から全部なんて書かないだろうし、趣味でいじる分にはそれが楽しいってだけの人もいる。
世間は広いんだぜ
71:デフォルトの名無しさん
10/01/24 00:13:01
>64
レイヤーアーキテクチャに対する意識も低そうだな
72:デフォルトの名無しさん
10/01/24 01:09:42
>>64
> 例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装するとか
要はこれだけか。
イライラするほど内容の無い文章だな。
73:デフォルトの名無しさん
10/01/24 03:35:56
>>69
ばれたか(笑)
74:デフォルトの名無しさん
10/01/24 09:57:58
>>70 >72
アンカーをたどって読んでみたが、俺には
> 例えばDirectXのAPI名をそのままGLライブラリ(ブリッジ)として再実装する……のはただの禿げたマゾか露出狂の変態だろうね。
と読めた。
結論はD&Dとかでどうにかなるコードジェネレータくれくれと読んだ。
75:デフォルトの名無しさん
10/01/24 10:15:35
そのコードジェネレータ程度でどうにかなるようなことを何で今の時代でもシコシコCで書かなきゃあかんのか?と読めた。
76:デフォルトの名無しさん
10/01/24 15:34:59
複数の解釈が可能なのって釣りの典型か。
77:デフォルトの名無しさん
10/01/24 18:27:53
パースが簡単な3Dモデルのファイルフォーマットを教えてください
78:デフォルトの名無しさん
10/01/24 18:48:31
3DSもしくはOBJ
79:デフォルトの名無しさん
10/01/25 14:38:19
"パース"だけならcolladaも楽だけどw
やっぱobjじゃないスか。
見りゃ分かる。自分で書ける。
80:デフォルトの名無しさん
10/01/25 14:42:03
とりあえず、何らかのモデリングソフトで作ったモデルを
お試しで表示させてみる時の定番は Wave fron OBJ 形式な予感
※ただし俺の定番
81:デフォルトの名無しさん
10/01/25 14:43:01
typo
Wavefront OBJ形式=OBJな
82:デフォルトの名無しさん
10/01/25 15:46:36
objってモーションある?
83:デフォルトの名無しさん
10/01/25 16:08:59
>>82 モデルデータだって言ってるのに、なんでモーションの話なんか出てくるんだ
ある訳無いだろ。
含まれてるのは頂点とその結合、マテリアルや法線ベクトルなどの
もっともローレベルの基礎の情報だよ
アニメーションとかそんな別立ての情報は含まれて居ない
84:デフォルトの名無しさん
10/01/25 16:15:06
MMDとかそういう初心者向けのトイソフトから興味を持った人は勘違いしやすいんだけど、
モデルデータとモーションデータは、それぞれ話の軸が違う
かたやモデル情報は "形状の" データで、かたやモーションは時間軸での "変化の" 記録。
DirectX や COLLADA はこれらの味が違う情報を1ファイルにパックしてるが、
Wavefront OBJ はそんなパックを持っていないので、パースも楽だって話。データもASCIIだし
85:82
10/01/25 16:19:21
ごめん(´・ω・`)
86:デフォルトの名無しさん
10/01/25 17:54:47
いいのよ
87:デフォルトの名無しさん
10/01/25 19:13:45
いいのかよ
88:デフォルトの名無しさん
10/01/25 23:59:01
いいのだよ
89:デフォルトの名無しさん
10/01/26 00:17:23
イインダヨ
90:デフォルトの名無しさん
10/01/26 00:51:23
だみだコリャ
次いってみよう
91:デフォルトの名無しさん
10/01/26 22:13:02
質問スレではないのですが、もしやり方がわかる人がいたらお助け願いたいですorz
球体にデクスチャを貼り付けたいのですが、どうもうまくいきません。
もしよかったら回答ソースコード添付で教えていただけるとすごく助かります><;
球体のソースコード:URLリンク(www.dotup.org)
球体の画像データ:URLリンク(www.dotup.org)
92:デフォルトの名無しさん
10/01/26 22:49:23
そのソースmainが全くないようなんだけど、実際どこまでできてるの?
どこが上手くいかないのかわからないともなんとも助けようがない。
なんでもいいから解答をソースでくれって話なら質問スレでもお断わりだろう。
93:デフォルトの名無しさん
10/01/26 23:15:31
>>92
ご返事が送れて申し訳ないです。
現在のソースコード:URLリンク(www.dotup.org)
どうもmyDisplay関数内のglutSolidCubeを球体glutSolidSphereに変えたら表示されなくなってしまいます。
予想では、setupTextures関数が怪しいとおもってるんですが、
setupTextures関数が理解できません・・・
94:デフォルトの名無しさん
10/01/26 23:36:24
連投すみません。
>>92
mainはコピーミスで途中で消えていましたorz
すみません><
95:デフォルトの名無しさん
10/01/27 00:34:57
それはねーよ
96:デフォルトの名無しさん
10/01/27 00:43:00
違いましたかorz
どこだろう;
97:デフォルトの名無しさん
10/01/27 01:05:04
sun_old.tgaが無いので適当に128x128 32bit/pixelの画像作って動かしたら
球にも立方体にもテクスチャ張られてたよ。
98:デフォルトの名無しさん
10/01/27 01:17:32
sun_oldがないぞ。
99:デフォルトの名無しさん
10/01/27 01:18:51
先を越されたorz
100:デフォルトの名無しさん
10/01/27 04:42:54
これあれだろ?元々のソース自体、どこかにあった物を全部コピペで持ってきてて
実はC/C++ 自体全然わからなくて、でもどうしてもなんかテクスチャ貼ったキャラ動かしてみたくて
説明読んでも理解出来ないから他人にソース書いてもらいたいって、
そういう話だよね?
101:91
10/01/27 06:58:18
いろいろと説明不測で申し訳ないですorz
>>97
球体と立方体にテクスチャは晴れるのですが、どちらも球体にしたいのです。
そこで、キューブ体glutSolidCubeを球体glutSolidSphereに変えたいのですが、
変えてしまうとキューブから球体に変えたオブジェクトが消えてしまいます。
質問の意味としては、球体2つにテクスチャを貼り付けたいという意味です。
>>98
sun_oldは、テスト用なので、気にせず>>91の画像を使っていただいてほしいです。
>>100
このプログラムは、「図解 OpenGLによる3次元CGアニメーション」と
URLリンク(sports.oit.ac.jp)
↑のサイトを元に作りましたが、全部コピペしたわけではありません。
ちなみに、現在のソースは、立方体と球体の画像取り込みからではない
テクスチャマッピングのソースを画像読み込みにし、オブジェクトが動くように
しただけです。すると立方体を球体にしようとしてもできないので、
質問させていただきましたorz
みなさんレスありがとうございます。説明不足でもうしわけなかったです。
102:デフォルトの名無しさん
10/01/27 08:32:29
みなさん数学ライブラリって何を使ってますか?
あと、能力による話だとは思うのですが
数学関係のクラスをどこまで自力で実装してますか?
103:デフォルトの名無しさん
10/01/27 13:51:49
中身の詰まった立方体(高さが非常に低いもの)の書き方を教えてください。
104:デフォルトの名無しさん
10/01/27 13:52:12
>>101
97だけど結果から言うと立方体でも球体でも動いた
>>91の画像は2つ入ってるけど使うのはtitan.tga?
sun_oldじゃなくても気にするなって言うが、全部解像度が違うんだから気にする
質問プログラムはsun_oldを使い、glutSolidSphereで動かないというなら、動かないプログラムと画像をupしないと意味が無い
glutSolidCubeをglutSolidSphereに変えて動かないなら変え方が間違ってるんだろうし
glutSolidSphere(1.0, 1, 1); とかに変えてんじゃないの?
105:デフォルトの名無しさん
10/01/27 14:34:11
>>103
中身が詰まってようが空だろうが外からは見えないから表面だけ定義すれば同じこと、
というのが面グラフィックの基本コンセプトだと思うが。
「中身が詰まった」ことでどのような違いを生みたいのか書かんと答えが出ないな。
106:デフォルトの名無しさん
10/01/27 15:10:42
ステンシル値1の部分に描画した立方体内部に、画像処理を施したいので、面だけで構成された立方体ではなく、中身が詰まったものを描画したいのです。
107:デフォルトの名無しさん
10/01/27 16:02:04
中身が詰まった物じゃなくて、断面が描きたいってこと?
URLリンク(www.sgi.com)
のsimplecapみたいな。もしそうなら
ステンシルテストのキャッピング(赤本5版日本語だと456頁)って手法かな
108:デフォルトの名無しさん
10/01/28 00:40:36
中身が詰まってるって言えばやっぱりvoxelでしょう。
URLリンク(artis.imag.fr)
のサイトを参考にしてvoxelレンダリングに挑戦してみたら?
OpenSceneGraphのvolume rendering機能の方が簡単かもしれんが
レンダリング可能なサイズが小さいかも。
109:デフォルトの名無しさん
10/01/28 11:03:46
glslってファイル分割できないの?
110:デフォルトの名無しさん
10/01/28 11:14:56
できるよ
111:デフォルトの名無しさん
10/01/28 17:59:07
ステンシルバッファのステンシル値の配列はこれで確保されてるのでしょうか?
// ステンシル値格納用配列
buf_stencil = new int[xsize*ysize];
for(int i=0; i<xsize*ysize; i++){
buf_stencil[i] = 0;
}
glReadPixels(0, 0, xsize, ysize, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, buf_stencil);
//もしステンシル値1のときは・・・
if( buf_stencil[xsize*(ysize-y-1) + x]==1){ /*ステンシル値をチェック*/
112:91
10/01/28 20:31:27
>>104
できました!ありがとうございます!
あと、画像2枚うpしてますが、2枚の画像を2つの球体に
別々に表示する方法がわかりません・・・
分かる方おられないでしょうか><;
113:デフォルトの名無しさん
10/01/28 20:56:19
>>111
よくわからんけどUNSIGNED_BYTEなのにint[ ] でいいの?
あとステンシルをCPUに持ってくるって、どういうことする場合なのか興味ある
114:デフォルトの名無しさん
10/01/28 22:55:14
113番さん、ご指摘ありがとうございます!!
UNSIGNED_INTで値が読み込めました。
なぜこのような処理をするかというと、ステンシル値1の部分で、CVの関数を使って画像処理を行い、
またGL(ARToolKit)に座標変換させるためです。
115:デフォルトの名無しさん
10/01/28 23:08:02
読み込みをuintにするよりは配列側をbyteにしたほうがいいと思う。ステンシルは256段階だからね。
116:デフォルトの名無しさん
10/01/28 23:52:50
いや、ステンシルが何ビットかは、ピクセルフォーマットによるでしょ・・・。
まぁ8ビットだろうけどw
117:デフォルトの名無しさん
10/01/29 00:06:21
ステンシルが8ビットより多いのってあったっけ?
118:デフォルトの名無しさん
10/01/29 16:55:40
実質1bitしか使ってない気がする
119:デフォルトの名無しさん
10/01/30 06:56:05
C, C++ベースでファイル選択のダイアログやスライダ、プログレスバー程度をGLUTと同時に使える
GUIツールキットはありますか?
GLUIはすでに使用していますが、少し物足りませんでした。
120:デフォルトの名無しさん
10/02/02 06:25:34
― 他社がCellと同コンセプトのもので違うものをつくっても、つながれば問題ない、SCEIさんとしてはOKということですか。
久夛良木 Cellとは違う発想でコンテンツサーバとして存在できるようなアーキテクチャを、他社が開発したとして、
そのプロセッサとCellのプロセッサの中でいろんなプロトコルスタックができますから、レイヤをビシッと決めてやればつながる。
ですから、最終的には国際規格にもっていく話になると思いますよ。
― どういうレイヤで入ってくる企業があっても問題はない?
久夛良木 最終的にはJavaということになるでしょう。
超レガシーで、携帯電話でも全部溶けてしまうような話になるかもしれない。DirectXみたいなのは最悪なんですね。
― どこらへんがですか?
久夛良木 もともとレガシーなものを垂直にたたいたら早いというものでしょ。あれは。
― 当たり前の話ですよね。
久夛良木 論外ですね。互換性もないし。
URLリンク(ascii.jp)
121:デフォルトの名無しさん
10/02/04 00:20:44
こんにちは、質問してよろしいですか。
メモリ上に用意したビットマップから、動的にテクスチャを生成しようと
考えてます。そこでglDrawPixelsとglCopyTexSubImage2Dを使ってみました。
その際、ビットマップの大きさがウインドウの大きさ以上になる部分が、
テクスチャに読み込まれないという問題があるのですが、どのように解決
できますか。
以下に、ソースを簡単に。余計なコードも多そうですが。
GLubyte map[WIDTH * HEIGHT * 3];
void display(void)
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport); // Viewポートの保存
glViewport(0, 0, WIDTH, HEIGHT); // Viewポートをテクスチャにあわせる
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glDisable(GL_TEXTURE_2D); // テクスチャOFF
glDrawPixels(WIDTH, HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, map);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); // Viewポートの復元
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glEnable(GL_TEXTURE_2D); // テクスチャON
glBegin(GL_QUADS); { テクスチャの書き込み } glEnd();
glutSwapBuffers();
122:デフォルトの名無しさん
10/02/04 00:24:23
DrawせずglTexImage2Dを使えばいいのでは
123:デフォルトの名無しさん
10/02/04 00:44:58
できました、ありがとうございます!
glTexImage2Dを使っちゃっても、普通に速いんですね。
124:デフォルトの名無しさん
10/02/04 05:28:58
むしろglDrawPixelsの方が遅いよ
125:デフォルトの名無しさん
10/02/04 22:27:51
Cn:カラーバッファ、Dn:デプスバッファ、Sn:ステンシルバッファとします。
1.C1,D1,Sxのバッファ状態から、
2.ステンシルマスクを作成し(カラーバッファ未使用)→Cx、D2、S2
3.C1,D1,S2のバッファ状態にもっていく
これを繰り返し行いたく、
A案
1後:FBOへ切り替え
2後:S2をglReadPixels()でCPUメモリへ退避
FBOからデフォルトへ戻す
S2をglDrawPixels()で復帰
B案
1後:D1をglReadPixels()でCPUメモリへ退避
2後:D1をglDrawPixels()で復帰
を試しましたが、どちらもglReadPixels()で遅いです。
(A案の方が、サイズが小さい分少しだけ速いようですが)
※PBOでglReadPixels(),glDrawPixels()してもほとんど変わらず
デプスバッファかステンシルバッファを高速に退避&復帰させる
にはどうすべきでしょうか?
#赤本には、
#glCopyPixels()をXORで使用するとGPU内で画像交換できる
#とか描かれていますが、どうしていいのかのか、また、
#上記のケースで使用できるのかもわかりませんでした。
もしくは、デプスバッファだけを一時的に切り替えて、2が行えるといいのですが
よろしくお願いします。
126:デフォルトの名無しさん
10/02/05 05:40:11
A,B案ともよくわかりませんが、XORでGPU内で画像交換ってのはよくあるXOR交換のことかと
Wikipedia項目リンク交換アルゴリズム
glCopyPixelsでやったことはないですが
127:デフォルトの名無しさん
10/02/07 00:54:39
OpenGLでコントローラを使おうとしているのですが、
printf("%d\r\n",js.lX);
で一応、初期値の -8 とプリントされているのですが、
動かしても変動がありません。どうも倒しながらキーボードを入力すると数値が変動するようです。
現在はキーボード入力で入力したときだけOpenGLが再描画されるのですが
これをJoystickを倒した時に再描画されるようにするにはどうすればよいのでしょうか?
switch (key) {
case 'd':
{
Point NextPos( PosX+0.2, PosY );
if( !ColCheck( NextPos ) )PosX +=0.2;
glutPostRedisplay();
}
ソースはこんな感じになっています。キーボード入力時のみの再描画ではなく、常に?描画するにはどうすればよいのですか?
初心者ですみません。書き込んでいて何を言ってるのかわからなくなってきました。
128:デフォルトの名無しさん
10/02/07 01:04:22
glutPostRedisplay();
これをswitchの外に置くだけじゃないのか
129:デフォルトの名無しさん
10/02/07 01:11:15
外に置いてみました。
ものすごい速度で再描画されています。
どうしたものでしょう、
130:デフォルトの名無しさん
10/02/07 01:33:05
sleepしてみました。
Joystick extern DIJOYSTATE2 js;を外部変数としていて
if( FAILED( hr = g_pJoystick->GetDeviceState( sizeof(DIJOYSTATE2),&js) ) )。
return hr; // The device should have been acquired during the Poll()
//ここで実際にゲームコントローラの状態を取得してjsに代入する
とあるのですが
if(js.lX>300){
printf("右");
}
で実行すると
error LNK2001: 外部シンボル ""struct DIJOYSTATE2 js" (?js@@3UDIJOYSTATE2@@A)" は未解決です。
error LNK1120: 外部参照 1 が未解決です。
とエラーが出てしまいます。これはどういう意味なのでしょうか??
131:デフォルトの名無しさん
10/02/07 01:53:01
そのメッセージの通りだと思う
132:デフォルトの名無しさん
10/02/08 09:13:16
取り合えずOpenGLとジョイスティックは切り離して考えたほうがいい。
133:デフォルトの名無しさん
10/02/08 09:58:39
使ったことないけどglutJoystickFunc()でとか
134:デフォルトの名無しさん
10/02/08 13:43:56
ゲーム以外の目的で企業がOpenGL使う場合、
glutって使われてるの?
135:デフォルトの名無しさん
10/02/08 15:26:31
使ったほうがいいときは使ってる
136:デフォルトの名無しさん
10/02/08 22:05:10
使うか使わないかなら、使うこともあるんじゃないの。
GLUTで勉強してればいいのかなとか心配なら、そんなこと気にする必要ない。
どんなライブラリでも使えるようになればいい。
137:デフォルトの名無しさん
10/02/12 01:16:02
ありがとう
教授にglutやっとけば問題ないといわれたんだが、
その人がちょっと古すぎる人なので今でも通用するか不安だったんだ
138:デフォルトの名無しさん
10/02/12 01:29:12
UIにQt使いたいんだけど、QtでもGLUT使える?
139:デフォルトの名無しさん
10/02/12 01:54:59
QtでGLUT使う意味がわからん。普通にQtでOpenGL使えるだろ
140:デフォルトの名無しさん
10/02/12 02:57:04
なぜ使いたいのかから説明しないといけないのか
めんどいな
141:デフォルトの名無しさん
10/02/12 03:21:10
情弱w
142:デフォルトの名無しさん
10/02/12 03:24:09
情強乙
143:デフォルトの名無しさん
10/02/12 15:03:15
>>137
床井先生・・・(:ω:)
144:デフォルトの名無しさん
10/02/12 17:35:48
GLUT使ってないシェーダの本出してください
145:デフォルトの名無しさん
10/02/12 18:30:42
GLUTは単にWindowのラッパだからシェーダは関係ないんじゃね?
146:デフォルトの名無しさん
10/02/12 19:52:31
俺QtでOpenGL使ってるけど快適だよ。
glutはさすがに時代遅れだろう。
147:デフォルトの名無しさん
10/02/12 19:53:59
Glutの描画関数使っててattribute変数とか使ってなくてクソだと思う。
そもそも、gl_ModelViewMatrixとかの組み込み変数は廃止予定なんだからダメだろ。
148:デフォルトの名無しさん
10/02/12 20:16:50
ちょっとした調査プログラムとかを超短時間で作りたいとかの場合は今でもGLUTが便利かな
glutSolidTeapot使いたいしw
149:デフォルトの名無しさん
10/02/12 20:33:11
QGL良さげだなぁ。
でもこれだけのためにQtランタイム要求するのはちょっと。
150:デフォルトの名無しさん
10/02/12 23:23:14
glutはglutSolidStanfordBunnyも設けるべきだったよね
151:デフォルトの名無しさん
10/02/12 23:33:01
import wx.glcanvas でぐぐる
wxpython + pyopengl 入れるだけ pydev eclipse でも動かせる
マック環境でインスコ簡単すぎて泣ける
gttkglext 入れるの難しすぎる・・・orz
152:デフォルトの名無しさん
10/02/13 02:30:53
漏れにとって GTK は遠い過去
現在は wxWidgets
未来は Qt
153:デフォルトの名無しさん
10/02/13 03:10:51
こっちを向いてよハニー
154:デフォルトの名無しさん
10/02/13 11:17:03
URLリンク(d.hatena.ne.jp)
gui ライブラリの取捨選択に正解なんてないと
思う結局何かしらの長所もあれば短所もあるし
どれが一番良いかは platform 次第の部分も大きいし・・・
いまから eclise, netbeans みたいなかんじに
普及させるとかは難しいだろうし
マルチプラットフォームは java 系統はよくできてると
思う。日本語入力とか難があるとかそういうのもあるし
ノルウェーのOpera Software ASAは11日、独自エンジンを搭載したWebブラウザー「Opera」v10.50のベータ版を公開した。
URLリンク(www.forest.impress.co.jp)
155:デフォルトの名無しさん
10/02/14 00:58:51
glut使用。
デフォルトでは、表示される範囲ってx,y,z=[-1,1],[-1,1],[-1,1]だけど、そこに[0,100],[0,100],[0,100]の範囲にある図形を描きたい。
方法はいくつか思いついたけど、どれが可読性(よく見かける、ややこしくない)/利便性(めんどくさくない、タイピングや考える手間が少ない)/速度(無駄な計算が少ない)などの面でバランスがとれているのはどれだろうか?
1. 図形の各々の座標をx=x/50 - 1, y=y/50 - 1, z=z/50 - 1とし、[-1,1]の範囲に収める
2. GL_MODELVIEWマトリックスをいじる。glScaled(1.0/50, 1.0/50, 1.0/50);glTranslated(-50, -50, -50);
3. GL_PROJECTIONマトリックスをいじる。glOrtho(0, 100, 0, 100, 0, 100);
なんとなく、3がベストな気がするが、例えばそれに拡大・縮小機能を付けるとき、2でやっていればglScaledで楽に変えられる。
GL_PROJECTIONにglScaledかけても結果は同じかもしれないけど、それをやってるサンプルを見たことがないけどなんでかなぁ。
156:デフォルトの名無しさん
10/02/14 01:02:54
投影とモデル変換は区別しとかないと、モデル数が増えた時にこんがらがるよ。
157:デフォルトの名無しさん
10/02/14 02:24:25
>>156
概念的な違いはあっても、表示のされ方は同じようなので、どう考えればいいのか分からんのです。
実際にものの大きさを変えたり動かしたりならモデル変換で、
見た目の上での問題で、ズームなり移動なりしてるなら投射と考えていいのかしら。
例えばGoogle mapみたいにマウスでつかんで引っ張って動かすみたいなインタフェースの場合、
あれは地図を動かしてると考えるのか、視点が変わってると考えるのかどっちなんだ?
あと、glRotateやglTranslateを投射に使うのはやめた方がいいのかなぁ?
158:デフォルトの名無しさん
10/02/14 03:13:05
モデリングソフトだと座標の単位を設定してモデルを作る。
だからその単位に合わせたカメラを作ればいいんじゃない。
現実と同じように考えればわかりやすい。
数個の図形を表示するだけなら、好きにすればいいと思う。
159:デフォルトの名無しさん
10/02/14 05:55:22
>>155
3。投影方法はGL_PROJECTIONへ
結果が変わらないからどっちでもいい場合もあるが、結果が変わる時に困る。
法線/ライト関係や、頂点シェーダー使う場合とか
>>157
地図(MODEL)を動かすのとカメラ(VIEW)を動かすのは、ライトがあると結果が変わってくる
どちらも投影ではないのでMODELVIEWマトリックスを弄ることになる
160:デフォルトの名無しさん
10/02/14 12:11:48
>>158-159
ありがとうございます。
なんとなく分かったような分からないような……
MODELVIEW行列でカメラを、元データの座標系のまんま描いたときに全体像が写る位置に移動させて、
投影する範囲をPROJECTION行列で設定するのがいいっぽいですね。
拡大・縮小は、MODELVIEWのスケールをいじっても、PROJECTIONの視野の範囲をいじってもどっちでもできそうです。
できればPROJECTIONでやってしまいたい感はあるのですが、回転動作も実装しないといけないかもしれないのです。
カメラ位置固定でカメラの首を振れば対応できる範囲じゃなくて、裏側も見られるくらいに回したいのですが、それは投射じゃないのでMODELVIEWになるのですね。
そして、そういうことするなら、いっそのことMODELVIEWで固めてしまいたい感じがします。
161:デフォルトの名無しさん
10/02/14 13:12:28
カメラの位置、カメラの向く方向、カメラの傾き(ロール)これらはVIEWマトリックスなのでMODELVIEW
拡大縮小がカメラのズームならPROJECTION
普通はGL_PROJECTIONは(glLoadIdentityしたあと)gluPerspective/(glFrustum)/glOrthoのどれか1行書くだけでいい
162:デフォルトの名無しさん
10/02/14 17:59:16
なるほど。両方をいっしょに扱うってのはよくないのですね。
163:デフォルトの名無しさん
10/02/14 20:28:15
>>161
>>カメラの位置、カメラの向く方向、カメラの傾き(ロール)これらはVIEWマトリックスなのでMODELVIEW
gluLookAt は PROJECTION で設定するのがいいと思うのだが、どうなんでしょう?
164:デフォルトの名無しさん
10/02/14 20:33:14
LookAtもModelviewでいいよ。
165:デフォルトの名無しさん
10/02/18 07:12:01
GLSLって実行時にコンパイルするしかないの?
166:デフォルトの名無しさん
10/02/18 10:44:53
んなわきゃない
167:デフォルトの名無しさん
10/02/18 11:34:53
GLSLは実行時コンパイルだろ
168:デフォルトの名無しさん
10/02/18 12:12:19
んなわきゃない
169:デフォルトの名無しさん
10/02/18 22:32:15
んなわきゃないしか言えないの?
170:デフォルトの名無しさん
10/02/18 22:40:33
ってことは
シェーダのソースは丸見えになるということなんですね。
171:デフォルトの名無しさん
10/02/18 23:57:21
独自に適当な暗号化でもしておけばいい。
172:デフォルトの名無しさん
10/02/19 02:30:35
一応、Cのコード内に埋め込むことはできる。
173:デフォルトの名無しさん
10/02/19 11:09:59
glShaderSource() が呼び出されるときにパラメータを覗けばソースを見ることができる。
174:デフォルトの名無しさん
10/02/20 15:27:16
GLのシェーダーが実行時にコンパイルと言うのは
事前にシェーダーバイナリを使えたとしても、
それはドライバ会社のシェーダーコンパイラ依存があるからって事じゃね?
(GLって確かシェーダーバイナリの仕様まで決めてないかと)
つまり自分の環境しか意識しないのであれば、事前にシェーダーバイナリ作って
プログラムに埋め込むなり、別バイナリとしておくなりしておけば良い
(これが、言葉的に実行時コンパイルしかできない訳ない、になる?)
175:デフォルトの名無しさん
10/02/20 20:38:22
OpenGL ES 2.0 の話だったの?
176:デフォルトの名無しさん
10/02/25 00:27:30
glTexSumImageをUNSIGNED_SHORT_5_5_5_1でやるとやたらに遅い。
UNSIGNED_SHORT_5_6_5だとアホみたいに早いのに・・・。
透過色の処理はRGB5551, RGB565のどちらの場合でも切ってるのに、
何が効いてるんだよ
177:デフォルトの名無しさん
10/02/25 08:16:53
internalformatを何にしてるか知らんけど、変換が遅いだけじゃない?
ドライバやグラボ依存だと思われる
178:デフォルトの名無しさん
10/02/26 22:01:56
すみません、凄く抽象的な質問なのですが
バッファをフラッシュした際に落ちるのはどういった原因が考えられますでしょうか?
ウィンドウのサイズを変更した時、バッファをフラッシュするところで落ちてしまいます。
179:デフォルトの名無しさん
10/02/27 10:35:52
落ちる前にglGetErrorとか使ってみたら
180:デフォルトの名無しさん
10/02/27 12:00:15
>>179
ありがとうございます。早速今晩にでも試してみます。
181:デフォルトの名無しさん
10/02/28 18:52:15
ES2.0の話ですが、誰か頂点属性に半精度浮動少数点を使った事ある人いますか?
(拡張でHALF_FLOATがサポートされてるのは確認)
質問があるんですけど、(通常のGLでも意味が同じならOKです)
頂点配列でVBOを作って、それで頂点属性を指定する場合、
当然頂点配列もHalfFloat部分は、16bitにしなければならないと思いますが
通常のC++では16btiの浮動少数点型は有りませんよね?
つまり、通常の単精度floatを、半精度に変換するルーチンをかませながら
float -> HalfFloat と代入しながら頂点配列を操作する感じなんですかね?
で更にシェーダー側の質問ですが、
単精度のHalfFlaotで受け取る頂点属性は何か特別な宣言がいりますか?
例えば
attribute lowp vec2 TexCoord;
とか、精度修飾子も低い指定が必須ですか?それとも無関係?
それからシェーダー内のHalfFloat属性の変数は、計算に注意点は何かありますか?
色々と細かい質問ですがよろしくお願いします。
182:デフォルトの名無しさん
10/02/28 20:23:19
GLSLの質問はこちらでいいのでしょうか?
シェーダプログラムを複数作成するプログラムを組んでいるのですが、
現在使用しているシェーダプログラムの識別子を返すような関数はありますでしょうか?
例えば、
glUseProgram(1);
がどこかで呼ばれた後、他の場所で"1"の値を取得したいのですが・・・。
glIsProgramは識別子が分かってないとダメみたいですし・・・。
もしかすると、プログラムを複数作成してる時点でおかしいのかもしれないのですが、
どなたかご教示お願いします。
183:デフォルトの名無しさん
10/02/28 20:35:34
>>182
考え方が逆
glCreateProgram() の戻り値がシェーダーもアタッチされてる識別子で、自分で制御しなきゃいけないでしょ
つまり
GLuint programID;
programID = glCreateProgram();
glUseProgram( programID );
てな感じで、変数(構造体なりクラスなりのメンバとか)として
今セットしてるプログラムを制御しなきゃ駄目
184:デフォルトの名無しさん
10/02/28 20:48:21
>>183
レスありがとうございます。
シェーダプログラムの作成とシェーダを用いて行う処理を
一つのクラスにまとめてしまおうと考えています。(楽に再利用できるように)
別のクラスか何かで既にシェーダプログラムを使用していた場合、
使用中のシェーダプログラムが変わってしまうので、
上記の処理を終えた後に元のシェーダプログラムに戻しておきたいと思ったので・・・。
例)
Aクラス処理開始(ProgramID:1)
↓
↓→Bクラス処理開始(ProgramID:2)
↓
↓→Bクラス処理終了(ProgramID:2)
↓
Aクラス処理終了(ProgramID:1)
分かりにくくてすいません。
185:デフォルトの名無しさん
10/02/28 20:57:52
>>184
普通は、描画前に自分が必要なセットをして終ったらリセットじゃないかな?
描画A
glUseProgram(ID_A);
glDraw***();
glUseProgram( 0 ); // リセット(以降に意図しない描画をさせない為)
描画B
glUseProgram(ID_B);
glDraw***();
glUseProgram( 0 );
これなら、どんな描画を呼ばれても平気じゃん
こう言う作りにしてにないのは、設計の問題な気がする
(GLの仕様にマッチしない設計)
186:デフォルトの名無しさん
10/02/28 21:01:38
>>184
自分でglUseProgramをコールしてるんだから
今セットしている値をカレント値として取っておいて
PUSHとPOPの仕組みを作れば良いじゃん
187:デフォルトの名無しさん
10/02/28 21:21:26
レスありがとうございます。
>>185
やはりその方法しかないですよね・・・。
>>186
そうしてしまうと、別クラスでシェーダを変えた時に
Push,Popの値とズレが生じてしまうので、
AもBも包含し、Push,Popを管理するクラスCが
必要になってきたりとむしろ煩雑になる気がして・・・。
バックバッファの描画結果をFBOに移し変えてフィルタ処理を行い、
再びバックバッファに書き込む、という処理をクラス化しようとして
glIntegerv()の
GL_TEXTURE_BINDING,
GL_RENDERBUFFER_BINDING_EXT,
GL_FRAMEBUFFER_BINDING_EXT,
の3つを使って以前のクラスの各設定値は全部取得できたので
シェーダの識別子も取得出来るだろう、と考えたのですが甘かったですねorz
ちょっと仕様変える必要がありそうです。お騒がせしました。
そしてこんなにも早くレスをくださった皆様、ありがとうごさいました。
188:デフォルトの名無しさん
10/02/28 23:30:34
>>182
つglGetIntegerv( GL_CURRENT_PROGRAM, &id );
189:デフォルトの名無しさん
10/03/01 00:50:59
>>181
VBOでHALF_FLOAT使ったことないので他からの推測だが、C++側をfloatで用意しておけば、
あとは勝手にGL側が内部でHALF_FLOATに変換するような気がする。
190:デフォルトの名無しさん
10/03/01 11:52:18
携帯ゲームで頂点のデータ(法線とか色とか)をcharやshortで持っているアプリを
デスクトップに移植する場合floatで置き換えてしまって良いですか。
何が何でもメモリ使用量を減らしたいからだと思うけどデスクトップなら4バイト使っても問題ないよね?
191:デフォルトの名無しさん
10/03/01 12:43:19
好きにしたらいいと思うが、変えなくてもいいものは変えないほうがいいと思う
192:デフォルトの名無しさん
10/03/01 13:56:00
変えないといちいちscaleとbiasをかけてfloatに変換してからGPUに送ったりしないといけないので可能なら変えたい。
ゲームとか作った経験がないのでで実際に使われる頂点数とかどの程度影響があるのかよくわからんのです。
193:デフォルトの名無しさん
10/03/01 16:07:38
>>188
182で質問をした者です。
ありがとうございます。無事に解決できました。
GL_CURRENT_PROGRAM,こんな直球な名前の定義があったんですね・・・申し訳ありません;
おかげさまで仕様変更することなくプログラムを進めて行けそうです。
本当にありがとうございました。
194:デフォルトの名無しさん
10/03/03 23:48:17
>>181
OpenEXRのソースコードの中にhalf floatを扱うクラスか関数があって
それ使ってfloatからhalf floatに変換してGLへ渡していたような気がする。
195:デフォルトの名無しさん
10/03/11 15:16:03
FPS作ってんだけど(銃で撃つほう)
マウスで周りみれて移動もできるようにしたんだけど
マウス動かすから、ウィンドウ外にマウスがでちゃうんだ。
ウィンドウ外にマウスがでると、制御できなくなるんだ。
あれってGLUTの設定かもしれないんだけど
誰かわかんないかな?
196:デフォルトの名無しさん
10/03/11 15:53:43
Windows?
画面から出さないようにしちゃうとか ClipCursor()
端っこにくっついても動くようにしたいなら、毎回マウスを画面の中央に移動させたりとか SetCursorPos()
じゃだめかな
197:デフォルトの名無しさん
10/03/11 18:27:52
>>196
thx
windows上で動けばいいけど、glutで生成したウィンドウ関係なしなのかな
関数いれてコンパイルしたけど、戻り値が1で失敗してるみたい。
WINAPIでやるべきなのかな?関係ないかな。
もうスレ違いかぬ。
198:デフォルトの名無しさん
10/03/11 22:27:30
ゲームならglutよりはglfwとかSDLとか使った方がいいかもね
199:デフォルトの名無しさん
10/03/11 22:48:11
>>197
>関数いれてコンパイルしたけど、戻り値が1で失敗してるみたい。
どこにどの関数をどんな引数で入れたのかとかないとさすがにわからん
>>196の関数もWIN32APIだからググればきっとわかるよ
200:デフォルトの名無しさん
10/03/12 01:14:35
OpenGL 4.0が出た件。
ペースあがってきたなOpenGL。OpenCLとの連携強化とかテッセレーターとかDX11相当色々。
201:デフォルトの名無しさん
10/03/12 02:22:24
未だに1.3に毛が生えた程度に縛られている自分としては
あんまりペースあげられてもなー。
MesaがOpenGL 2.x相当になったかと思えばOpenGL 3.xで破壊的なことされるし
レガシーフリーで足並みそろったかと言えば全然だし。
iPhoneみたいに具体的な製品と結びついてないと標準化は名ばかり。
202:デフォルトの名無しさん
10/03/12 09:37:08
(DirectXに比べて)アップデート遅いんじゃボケーって言われてたのがウソみたいだな。
番号が上がってるのは分かるが内実が伴ってないというか、
それで何が変わるの、実際に使われるのというと疑問がある。
いきおい勉強するきも沸いてこない
203:デフォルトの名無しさん
10/03/12 12:33:58
OpenGL_ARBの目的としては、今回GDCで発表していることもあるし、マルチプラットフォームの強さを活かしてゲームデベロッパーにDirectXじゃなくてOpenGLを採用してもらうことがあるんじゃないかな。
個人的な意見としてもOpenGLには完全な業界標準としての位置を築いて欲しい。
204:デフォルトの名無しさん
10/03/12 20:50:15
ゲームで今からOpenGL採用してなんかメリットあるの?
205:デフォルトの名無しさん
10/03/12 20:52:14
プラットフォーム非依存ってのは非常に大きいだろう。
206:デフォルトの名無しさん
10/03/12 20:55:11
しかしOpenGLだけでは一般的なフォーマットの画像やポリゴンデータを読み書きできないぞ。
207:デフォルトの名無しさん
10/03/12 20:58:44
だけで使うバカがどこにいる?
208:デフォルトの名無しさん
10/03/12 21:20:43
プラットフォーム非依存といってもコンテキストとか依存部分をしっかり作るのは
相当面倒くさくて、ARBとか細々としたものに対応するのも面倒くさくて、結局
もっと上位のミドルウェアを使わなきゃやってられないなぁと思った頃には、
なんでOpenGL使おうと思ってたんだっけ?とかいうことになってたり
209:デフォルトの名無しさん
10/03/12 22:56:29
>>206
そんなの含めなくていい。
もっと勉強しろ。
210:デフォルトの名無しさん
10/03/12 23:31:51
具体的に何を?
211:デフォルトの名無しさん
10/03/13 06:46:58
画像読み込みライブラリなんていくらでもあるだろうが!
なんかマイナーなフォーマットでも使うのか?
212:デフォルトの名無しさん
10/03/13 12:49:13
URLリンク(game.watch.impress.co.jp)
そういえばOpenGL 4.0ならXPでもSM5.0機能が使えるんだな。
213:デフォルトの名無しさん
10/03/13 15:24:15
framebuffer objectについて質問があります。
GLSLを用いて畳込み等のフィルタ処理を行う時、
depth bufferやstencil bufferを利用しない場合は
renderbufferの関連付け(attach)はしなくても良いのでしょうか?
どなたかご教示お願いします。
214:デフォルトの名無しさん
10/03/13 15:36:31
デプスバッファ用のレンダーバッファーなりテクスチャーなりをアタッチしておかないと描画時にエラーが出た気がするが・・・。
もしかするとデプステストしないんなら、いらなかったかもしれない。まぁ聞くより試してみるのが一番早いよ。
215:デフォルトの名無しさん
10/03/13 15:45:34
>>214
レスありがとうございます。
試してみるしかないですか・・・。
家にATIとNvidiaと二つのビデオカードがあるんですが、
片方では動いて片方では動かなかったりすることがたまに起きるので、
公式な解答があるとそれに従った方がいいかなと思い・・・。
スレ汚し申し訳ありません。試してきます。
216:デフォルトの名無しさん
10/03/13 15:55:52
>>215
今試した見たらいらなかったわ。しかもDepthTest有効にしてもエラー出なかったw
URLリンク(firestorage.jp)
↑は参考までに。C#で書いてあるのはご愛嬌。
217:デフォルトの名無しさん
10/03/13 16:07:23
以前デプスバッファ無しのFBO作ったらエラーで弾かれた気がするから、もしかするとコンテキストのバージョンによるのかも。例えばOpenGL2.0のコンテキストならダメで3.2ならOKとかね。
218:デフォルトの名無しさん
10/03/13 16:45:15
>>216
>>217
レスありがとうございます。
テストもしていただけたみたいで、本当にありがとうございます。
これで画像処理する時にVRAMを圧迫するような領域を確保しなくてすみます。
カードが少し古いOpenGL2.0までの対応なので、
こちらでも試してきます。色々とお世話になりました。
219:デフォルトの名無しさん
10/03/13 17:39:28
それは、ATIとNVIDIAのドライバの違いもあるよ
NVIDIAのドライバは柔軟と言うか、GLの仕様を外れても動くイメージ
ATIのドライバは、GLの仕様に厳格と言うか、仕様に外れるとスグにハングするイメージ
よくATIのGLドライバがクソって言われてるのは、この辺だと思う
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4331日前に更新/174 KB
担当:undef