0

モバイル プラットフォーム用のゲームに取り組んでおり、画面よりも解像度の低いレンダー ターゲットにエフェクトをレンダリングしたいと考えています。問題は、フルスクリーンの深度バッファから始める必要があることです。

ハードウェアが GL_OES_depth_texture をサポートしていれば、比較的簡単だと思いますが、残念ながらそうではありません。そのため、フルスクリーン レンダリングから深度情報を取得し、それを低解像度レンダリングに使用する方法が他にないかどうか疑問に思っています。

レンダー バッファーを実際にダウンサンプリングできない場合、高解像度の深度バッファーを低解像度のカラー バッファーを持つレンダー ターゲットにバインドできますか? フレーム バッファ オブジェクトへのすべての異なるアタッチメントの解像度が一致する必要があるというドキュメントは見つかりませんが、それが要件であると強く思います。

ご協力いただきありがとうございます!

4

1 に答える 1

1

FBO にアタッチされたテクスチャにレンダリングする必要があると思います。テクスチャの解像度は、必要に応じて低くすることができます。テクスチャは、ほとんどのプラットフォームで OpenGL ES 1.1 および 2.0 で実際に役立つ唯一の FBO アタッチメントです。

ありがとうアンドン。

Andon が示唆しているのは、OpenGL ES 2.0 が理解できる通常の GL_RGBA 形式でテクスチャにレンダリングできるが、より効率的な方法で色をパック/エンコードできるということです。これは、そのテクスチャを使用してカスタム フラグメント シェーダでレンダリングする場合にのみ実行できます。カスタム フラグメント シェーダは、そのテクスチャを入れたカスタム フォーマットをアンパック/デコードします。たとえば、テクスチャ サンプラーから読み取った値は、実際には任意のフォーマットにすることができます。

float fR = texture2D(gsuTexture0, gsvTexCoord0).r;
float fG = texture2D(gsuTexture0, gsvTexCoord0).g;
float fB = texture2D(gsuTexture0, gsvTexCoord0).b;
float fA = texture2D(gsuTexture0, gsvTexCoord0).a;

float fDepth = fR;
于 2013-10-04T23:12:46.320 に答える