我最近从 using 切换glBufferData
到glMapBufferRange
which 让我可以直接访问 GPU 内存,而不是每帧都将数据从 CPU 复制到 GPU。
这工作得很好,在 OpenGL ES 3.0中我每帧执行以下操作:
- 通过 .获取指向我的 GPU 缓冲内存的指针
glMapBufferRange
。 - 使用此指针直接更新我的缓冲区。
- 用于
glUnmapBuffer
取消映射缓冲区以便我可以渲染。
但是某些 Android 设备可能至少具有 OpenGL ES 3.1,并且据我所知,可能还具有EXT_buffer_storage扩展名(如果这是错误的扩展名,请纠正我?)。使用此扩展,可以设置不需要使用标志映射/取消映射每个帧的持久缓冲区指针。GL_MAP_PERSISTENT_BIT
但是我无法弄清楚或在网上找到很多如何访问这些功能的方法。
我如何在 Android 上的 OpenGL ES 3.1 中glMapBufferRange
使用set 调用?GL_MAP_PERSISTENT_BIT
检查glGetString(GL_EXTENSIONS)
似乎确实显示扩展程序存在于我的设备上,但我似乎无法找到GL_MAP_PERSISTENT_BIT
某个地方,例如在GLES31
orGLES31Ext
中,我只是不确定如何继续。