6

私は現在、ゲーム用に Android で OpenGL ES 2.0 を試しています。私のマップは、すべての位置の高さの値を持つ 2D グリッド マップです。ここで、各座標の高さをテクスチャに格納して、頂点シェーダーで高さルックアップを実行したいと考えました。

このアイデアの利点は、一般的な三角形ネットを生成し、ユーザーが現在見ているマップの位置に (オフセットを使用して) 配置できることです。オフセットにより、ユーザーがビュー位置を移動するたびに新しい三角形ネットを作成し、テクスチャから高さプロファイルを読み取る必要がなくなります。

現在、多くの現在の Android デバイス (Galaxy S3 でさえ) が頂点シェーダーでのテクスチャ ルックアップをサポートしていないという問題があります。悲しいことに、これは私の現在のアプローチを完全に破壊します。

私の質問: 頂点シェーダーでグラフィック カードのメモリからデータをフェッチする他の可能性はありますか? 各頂点のデータを直接指定しないと、(私が知る限り) ユーザーがビューの位置を変更するたびに高さマップを再作成する必要があります。(ユーザーがビュー位置を変更するたびに高さマップを作成するのは遅いです...)

ご協力ありがとうございます + よろしくお願いします。

アンドレアス

4

1 に答える 1

3

texture2DLod()関数は、頂点シェーダーでテクスチャルックアップを実行するために使用することを目的としています。

セクション 8.7GLSLES仕様のテクスチャルックアップ関数を参照してください。

andyのコメントによると、GL_MAX_VERTEX_TEXTURE_IMAGE_UNITSを使用する前に確認することを忘れないでくださいtexture2DLod()。頂点テクスチャルックアップがサポートされていない場合は、この機能なしで別のシェーダーにフォールバックする必要があります。

于 2013-01-24T13:57:38.750 に答える