2

さまざまな形状を 1 つの大きなメッシュにマッシュアップし、これらを GL_ARRAY_BUFFER と GL_ELEMENT_ARRAY_BUFFER の 2 つの VBO に格納する OpenGL レンダラーを作成しようとしています。OpenGL ES 2 と OpenGL 3.2 コアの両方で動作することを目指しています。私は現在、このメッシュ内から形状を削除するための最良の方法を見つけようとしています。現在のアプローチは、おそらくバックグラウンド スレッドで全体を定期的に再構築することです。

問題は、新しいきれいなメッシュを再構築するために、glMapBuffer を使用してバッファーに書き込まれた頂点/インデックスにアクセスする必要があることです。GL_OES_mapbufferのドキュメントによると、WRITE_ONLY_OES は「アクセス」の唯一の受け入れ可能なパラメーターです。

したがって、新しいバッファを作成するために、そこに示されているデータを信頼して読み取ることができるとは思いません。GL Core にはバッファ データをコピーできる関数が他にもあることは知っていますが、これらも欠落しているようです。

これが ES 2.0 では不可能であることを確認したり、バッファ読み取りを達成するためのアプローチを提供したりできますか? 私の現在の解決策は、すべてのデータのシャドウ コピーを保持することですが、これは明らかに理想的ではありません。

4

1 に答える 1

0

GPUデータのシャドウコピーをメインメモリに保持する方が、GPUメモリからこれらのデータを読み取るよりもはるかに優れていると思います。とにかくglMapBufferを使用する前に、以前のデータを破棄することをお勧めします。詳細については、これをお読みください(質問に対する直接の回答は得られませんが、役立つ場合があります)。

于 2012-07-06T10:29:06.693 に答える