1

私は OpenGL プログラムに取り組んでおり、バウンディング ボックスを計算する必要があります。それを行うコードを作成しましたが、頂点バッファーから頂点の調整を取得できません。誰かが頂点バッファからデータを取得する簡単な方法を説明できますか? AndroidおよびOpenGL esにJavaを使用しています

4

2 に答える 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 に答える