0

地形の動的な高さマップがあり、ほぼすべてのフレームで変更されます。高さマップとしてgltexsubimage2dとtextureを使用するか、vboを​​作成する代わりに、フレームごとに頂点バッファを更新する必要がありますか?どのアプローチをより速くする必要がありますか?vbo経由でデータを送信するハードウェアバイリニアフィルターを失っていることを理解していますが、google gltexxubimage2dによると、モバイルデバイスで問題が発生し、フレームごとに使用できるようには見えません。

実際の質問は次のようになります:頂点属性を使用するよりもテクスチャのGPUメモリにデータを送信する方が速いですか?実装に依存しますか?たとえば、ビデオ再生キャンバスとしてクワッドを使用するために、Androidのopenglでテクスチャの更新を実現したボディはありますか?この質問は、mali-400やtegra3のような新しいデバイスではおそらくナンセンスであり、どちらのアプローチでもパフォーマンスが十分であると理解していますが、adreno200またはsgx535との互換性が必要です。

4

1 に答える 1

0

テクスチャの変更と頂点の操作を比較することをお勧めします。

これは、VBO操作では、テクスチャメモリをメモリに変更するよりもはるかに多くのデータ移動とメモリ帯域幅が必要になるためです。

各頂点には少なくとも5つのアイテム(x + y + z + tx + ty)がありますが、照明アルゴリズムで非常に一般的な法線を考慮すると、多くの場合8つのアイテムがあると考えてください。

一方、代わりに、テクスチャは頂点ごとに1つの値にすぎません(通常)。

多くの速度低下を引き起こすこのソリューションの非常によくある間違いの1つは、多くのルーキー(そして、これはあなたのケースではないと確信しています)が、ハイトマップに使用するテクスチャのミップマップ生成を有効にすることです。

必ず無効にしてください。

glTexParameteri(GL_TEXTURE_2D、GL_GENERATE_MIPMAP、GL_FALSE);

もう1つのアドバイスは、テクスチャのピクセルのフォーマットを最小限の要件にすることです。8888を使用すると、444ピクセルの解像度を使用するよりもはるかに重くなります。これは、各フレームのメモリ転送がはるかに高速になることを意味します。

これが何らかの形で役立つことを願っています。

于 2012-06-11T12:49:38.547 に答える