1

我正在研究 OpenGL 程序,我必须计算一个边界框。我编写了代码来执行此操作,但我无法从 vertex buffer 获取顶点坐标。有人可以向我解释一种从顶点缓冲区获取数据的简单方法吗?我正在为 android 和 OpenGL es 使用 Java

4

2 回答 2

1

如果您使用 OpenGL ES 3.0 或更高版本,则可以使用glMapBufferRange()直接访问缓冲区数据。有关该功能的详细信息,请参见手册页,有关 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 回答