首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在安卓系统上使用GL_MAP_PERSISTENT_BIT中的OpenGL ES 3.1?

如何在安卓系统上使用GL_MAP_PERSISTENT_BIT中的OpenGL ES 3.1?
EN

Stack Overflow用户
提问于 2021-05-09 16:37:41
回答 1查看 363关注 0票数 1

最近,我从使用glBufferData切换到glMapBufferRange,这使我可以直接访问GPU内存,而不是将数据从CPU复制到GPU的每一个帧。

这很好,在OpenGL ES 3.0中,每帧执行以下操作:

  • 通过glMapBufferRange获取一个指向GPU缓冲区内存的指针。
  • 使用此指针直接更新缓冲区。
  • 使用glUnmapBuffer取消对缓冲区的映射,以便我可以呈现。

但是一些安卓设备可能至少有OpenGL es3.1,据我所知,也可能有存储扩展(如果是错误的扩展,请纠正我?)使用此扩展,可以设置持久缓冲区指针,这些指针不需要使用GL_MAP_PERSISTENT_BIT标志映射/取消对每个帧的映射。但是,在如何访问这些功能方面,我无法在网上找到更多的信息。

如何在安卓上使用glMapBufferRange ES 3.1中的GL_MAP_PERSISTENT_BIT设置来调用OpenGL呢?

检查glGetString(GL_EXTENSIONS)似乎确实表明我的设备上存在扩展,但我似乎找不到GL_MAP_PERSISTENT_BIT在哪里,例如在GLES31GLES31Ext中,我只是不知道如何继续。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-10 21:35:25

用于OpenGL ES的标准Android绑定只公开所有在Android上实现都支持的扩展。如果希望公开不那么普遍可用的供应商扩展,则需要使用与NDK一起编译的本机代码中的eglGetProcAddress()来获取入口点,从而提交自己的JNI绑定。

对于这个,您需要扩展入口点glBufferStorageEXT()

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67460102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档