我glMapBufferRange()
在 Android 上使用来自 OpenGL-ES 3.0 的工作代码,如下所示:
glBindBuffer(GL_ARRAY_BUFFER, myVertexBufferName);
glBufferData(GL_ARRAY_BUFFER, myVertexBufferSize, null, GL_STATIC_DRAW);
ByteBuffer mappedBuffer = (ByteBuffer)glMapBufferRange(
GL_ARRAY_BUFFER,
0, myVertexBufferSize,
GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
// [fill buffer...]
glUnmapBuffer(GL_ARRAY_BUFFER);
我的问题是关于在第三行降低glMapBufferRange()
to的结果。声明返回一个:ByteBuffer
glMapBufferRange()
Buffer
public static Buffer glMapBufferRange (int target, int offset, int length, int access)
在我的测试平台上,该函数返回一个子类,ByteBuffer
因此转换工作,但对所有支持 OpenGL-ES 3+ 的平台或 Android 版本做出这个假设似乎并不安全。虽然这看起来很合理,但我还没有找到任何保证它的文档,如果它得到保证,似乎函数应该被声明为返回ByteBuffer
。
Buffer
使用返回的正确方法(最好由文档支持)是glMapBufferRange()
什么?