1

オブジェクトを画面にレンダリングしています。さらに計算するために、すべてのピクセルの頂点シェーダーで計算される可視 XYZ 座標と法線が必要です。

それらの値を取得することはできますか?

私が考えることができる最も近いのは、オフスクリーン レンダリング ( OpenGL でオフスクリーンをレンダリングするには? ) を使用して、各座標を個別にレンダリングすることです (6 回レンダリングする必要があり、あまり効率的ではありません)。そのためには、フロートをバイト値に分割する必要があります。のようなものを使用することは可能ですか

(value & 0x0000FF00) >> 8)

頂点シェーダーで?

編集:私の質問は明確ではありませんでした。

追加情報: XYZ ワールド座標と対応するすべてのピクセルの法線を取得したい (例: X = -0.2、Y = 0.5、Z = 1.3; NX = -0.1、NY = 0.8、NZ = 0.1)

これまでのところ、私のパイプラインは、「Boris」が回答に投稿したものと非常によく似ています。

4

3 に答える 3

1

あなたがやろうとしているのは、いわゆるGeometry Bufferへのレンダリングです。これはDeferred Renderingの一般的な手順であるため、DR チュートリアルを参照して、その方法を確認することを強くお勧めします。Google はたくさん見つけましたが、これは opengl.org のニュース セクションで取り上げられました: http://ogldev.atspace.co.uk/www/tutorial35/tutorial35.html

于 2013-06-28T10:04:25.097 に答える
0

頂点シェーダーでこれらの値を使用してさまざまな変数を設定すると、フラグメント シェーダーでは、ピクセルごとに補間された値が取得されます。

OpenGL 4.3 では、変数の代わりに in 変数と out 変数が使用されることに注意してください。

于 2013-06-28T07:29:19.110 に答える