在 Android/Java 上安全使用 glMapBufferRange()
我有来自Android上的OpenGL-ES 3.0的工作代码,看起来像这样:glMapBufferRange()
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()
ByteBuffer
glMapBufferRange()
public static Buffer glMapBufferRange (int target, int offset, int length, int access)
在我的测试平台上,该函数返回一个子类,因此强制转换工作,但是对于支持OpenGL-ES 3 +的所有平台或Android版本进行此假设似乎不是很安全。尽管这看起来很合理,但我还没有找到任何可以保证它的文档,如果它得到保证,似乎应该将该函数声明为返回 。ByteBuffer
ByteBuffer
使用返回者的正确方法(最好有文档支持)是什么?Buffer
glMapBufferRange()