将顶点缓冲区转换为顶点数组

时间:2014-10-16 07:39:47

标签: android opengl-es vbo vao

我正在研究OpenGL程序,我必须计算一个边界框。我做了代码但我无法从顶点缓冲区获得顶点协调。有人可以解释一下从顶点缓冲区获取数据的简单方法吗? 我正在使用Java for android和OpenGL es

2 个答案:

答案 0 :(得分:1)

如果使用OpenGL ES 3.0或更高版本,则可以使用glMapBufferRange()直接访问缓冲区数据。有关该功能的详细信息,请参阅man page;有关Android中Java绑定的详细信息,请参阅GLES30 documentation

我不认为在ES 2.0中有任何合理的方法可以做到这一点。我可以想到绝对可怕的方法,但是我会很难指引你朝这个方向前进。好吧,为了完整性,请不要这样做:你可以渲染最终将顶点数据留在渲染目标中的东西,然后用glReadPixels()读回来。

如果您需要在自己的代码中频繁访问顶点数据,那么如果您保留它的副本,它很可能会更好。当您致电glBufferData()时,您已经拥有了数据。如果您在glBufferData()来电之后将其丢弃,只需将其保留,并在需要访问顶点数据时使用它。

答案 1 :(得分:0)

我已经找到了怎么做

    mFb= (FloatBuffer)    vb.getData(UlVertexBuffer.VERTEX_FIELD_POSITION).position(0);
    getmFloatArray(mFb);
    mSb= (ShortBuffer) ib.getData();
    getmShortArray(mSb);