OpenGLスレ Part12at TECH
OpenGLスレ Part12 - 暇つぶし2ch676:デフォルトの名無しさん
09/05/07 21:05:21
OpenGLプログラミングガイドの3.0対応版はいつ頃でるかなあ。

677:デフォルトの名無しさん
09/05/07 22:14:39
>>671ですが、レイヤードウインドウを用いて、それに対してオフスクリーンレンダリングの結果を描画することでスクリーンにダイレクトに描画することができました。
y座標を逆にして考える必要がありますが、テクスチャの読み込みや、最終的なレンダリング結果の画像出力の際に画像の上下反転を省くことができますね。
Vista T7500 2.2GHz 8600M GT、オフスクリーンレンダリング解像度256x256において、上限反転の有無でCPU使用率には15%ほどの差がありました。

678:デフォルトの名無しさん
09/05/08 00:19:29
openGLESでmqoを自前で読み込んで描画しているのですが

glDrawElementsで一括描画すると
頂点をインデックスで指定するので
1頂点=1UV座標となってしまいます、

同じ頂点で、違うUV指定のたくさんのポリゴンを描画するには、
glDrawArraysを複数回呼ぶしか無いのですか?

679:デフォルトの名無しさん
09/05/08 00:27:26
>>678
>>656-657

680:デフォルトの名無しさん
09/05/08 00:39:31
>>679
ありがとうございます。

forで、indexを何度も参照するぐらいだったら
高速化のために最初から
インデックスの数だけDirectXで言うTLVERTEXみたいなものを作るべきなのかもですね


681:デフォルトの名無しさん
09/05/08 18:32:46
FBOでデプスアタッチメントをDepthComponent32にするとデプスバッファは1ピクセルあたり32ビットになりますよね?
しかし、後でUnsignedByteで内容を配列に取得してみると256x256の解像度なのにも関わらず、65535までしかデータが埋まりません。
カラーバッファはUnsignedByteでもRGBA32ビット取得されますが、デプスバッファはUnsignedByteだと8ビット分しか取得されないのでしょうか。
また、UnsignedIntで取得してみると今度は262144まで、つまり32ビット分埋まりますが、内容を見てみると4バイトのうち2バイトは同じ値で残り2バイトは妙な値になっています。
これはつまりUnsignedByteで取得すると大体の深度値が返されるということなんでしょうか。

682:デフォルトの名無しさん
09/05/09 02:19:36
>>669
ピクセルフォーマットの設定値とグラボの相性でそうなる場合がある。
アルファブレンド使う場合でも24bitにしとくと上手く動いたりする。

683:デフォルトの名無しさん
09/05/10 20:49:31
32bitの深度値を指定しても内部では24bitってこともあるだろうしね
あとUNSIGNED_BYTEとかの指定はコンポーネント毎に何ビットか
RGBA8に対してUNSIGNED_BYTEなら1ピクセル4コンポーネントで32bitになるが
DEPTH_COMPONENTに対してUNSIGNED_BYTEなら1ピクセル1コンポーネントで8bitになってしまう
精度良く深度を扱いたいならDEPTH_COMPONENT32Fなんかの浮動小数点深度バッファを使うのがいいんじゃなかろうか

684:デフォルトの名無しさん
09/05/10 21:47:42
>>682-683
返事が遅くなりまして申し訳ありません。お返事ありがとうございます。
UnsignedIntで取得すると1ピクセル1コンポーネントでもIntが32bitであるため、しっかり262143まで埋まったんですかね。
で、4バイトのうち3バイトが深度値を表していて、残り1バイトは実際には24ビットで処理されているためにとりあえず3バイト目と同じ値で埋まっていると。
勝手にこういう解釈しましたが、間違いがありましたらご指摘よろしくお願いします。

685:デフォルトの名無しさん
09/05/11 01:14:09
>>684
何らかのアドバイスしたいけど、
正直グラボに依存する問題のような気がしてならないです。
テストツールとかをうpしてくださればうちの幾つかの環境で試してみますよ。

686:デフォルトの名無しさん
09/05/11 22:52:13
>>685
ありがとうございます。テスト用のファイルアップしました。
URLリンク(senduit.com)
Display関数の最後にあるReadPixelsでデプスバッファの内容を取得しています。
OSはVistaでGPUは8600M GTで、ForceWareは185.85です。この環境ではバイト配列を渡してUnsignedIntで取得すると1バイト目と4バイト目が一緒の値になります。

687:デフォルトの名無しさん
09/05/11 23:34:14
>>686
あ、うん。
VC#使ってないので、せめてバイナリでテストできるもの頼むよ。

688:デフォルトの名無しさん
09/05/12 00:09:55
>>687
URLリンク(senduit.com)
かなり適当に作ったので取得押してからが少し時間かかります。
取得を押すと128x128の解像度で描画した結果のデプスバッファの内容を取得します。
動かなかったりしたら申し訳ありません。その際は一人で頑張りますw

689:デフォルトの名無しさん
09/05/12 00:48:11
>>688
テキストファイルに貼り付けておきました。
テスト環境はVista32, GeForce7400Goです。
URLリンク(senduit.com)

Intelのオンボードでも試してみたかったけど、
FBO非対応だったのですみません。

690:デフォルトの名無しさん
09/05/12 23:45:49
>>689
実験ありがたいのですが、文字化けしちゃってますね。
機会があれば再度別のところにでもあげてもらえれば幸いです。すみません。

691:デフォルトの名無しさん
09/05/13 00:06:20
図々しい

692:デフォルトの名無しさん
09/05/13 02:04:26
馬が一番小回りが利くからね。

693:デフォルトの名無しさん
09/05/13 02:27:18
>>690
なぜ文字化けしたんだろうか
URLリンク(www.dotup.org)

694:デフォルトの名無しさん
09/05/13 02:50:13
まともな開発環境も持っていないのに必死にならんでいいよ

695:デフォルトの名無しさん
09/05/14 00:05:13
>>693
実験ありがとうございました。Go 7400でも実際には24bitのようですね。

696:デフォルトの名無しさん
09/05/14 00:21:18
URLリンク(developer.nvidia.com)
NVIDIAの全部のGPUで32bit Depthを指定しても24bitになるね


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch