私は OpenGL プログラムに取り組んでおり、バウンディング ボックスを計算する必要があります。それを行うコードを作成しましたが、頂点バッファーから頂点の調整を取得できません。誰かが頂点バッファからデータを取得する簡単な方法を説明できますか? AndroidおよびOpenGL esにJavaを使用しています
2 に答える
1
OpenGL ES 3.0 以降を使用している場合は、 を使用glMapBufferRange()
してバッファ データに直接アクセスできます。機能の詳細についてはman ページを、Android での Java バインディングの詳細についてはGLES30 のドキュメントを参照してください。
ES 2.0 でこれを行う合理的な方法はないと思います。絶対にひどい方法を考えることができましたが、あなたをその方向に導くのは気分が悪いです. 完全を期すために、ただしこれは行わないでください。レンダー ターゲットに頂点データを残してしまうようなものをレンダリングし、それを で読み戻すことができますglReadPixels()
。
独自のコードで頂点データに頻繁にアクセスする必要がある場合は、そのコピーを保持しておくとうまく機能する可能性が高くなります。を呼び出したとき、すでにデータがありましたglBufferData()
。呼び出し後に現在破棄している場合はglBufferData()
、単純に保管して、頂点データにアクセスする必要があるときにいつでも使用してください。
于 2014-10-16T14:50:22.930 に答える
0
私はそれを行う方法を見つけました
mFb= (FloatBuffer) vb.getData(UlVertexBuffer.VERTEX_FIELD_POSITION).position(0);
getmFloatArray(mFb);
mSb= (ShortBuffer) ib.getData();
getmShortArray(mSb);
于 2015-01-22T10:04:41.560 に答える