如您所知,缺少文档。但是仍然有一个相当确定的参考:OpenGL Java绑定的实现是公共Android源代码的一部分。
如果查看glNIBufferCange.cpp
glMapBufferRange()文件中JNI包装器的实现,可以看到通过调用名为的函数来分配缓冲区。基于此,可以假定缓冲区确实是一个。
NewDirectByteBuffer()``ByteBuffer
尽管供应商可以更改Android代码,但似乎几乎没有人会更改Java绑定的行为(可能是为了修复错误)。如果您担心在更高的Android版本中可能会更改实现,则可以使用标准的Java类型检查:
Buffer buf = glMapBufferRange(...);ByteBuffer byteBuf = null;if (buf instanceof ByteBuffer) { byteBuf = (ByteBuffer)buf;}或者,您可以使用更复杂的反射,从调用
getClass()返回的缓冲区开始。下一个问题当然是如果返回的缓冲区不是a,该怎么办
ByteBuffer。实际上,这是唯一对我有意义的类型。



