为什么opengl es 2.0中缺少glMapBuffer
?谁可以访问缓冲区数据以有效地更改它?只有glBufferSubData
是修改缓冲区的最佳方法吗?
答案 0 :(得分:3)
您需要扩展程序GL_OES_mapbuffer。这提供了glMapBufferOES和glUnmapBufferOES。
映射子范围有一个单独的扩展名:GL_EXT_map_buffer_range。
答案 1 :(得分:2)
glMapBuffer
是ES 2.0中的extension,不是核心规范的一部分。绝大多数设备(所有iOS和大多数Andriod)都提供扩展,但不是必需的。上传VBO数据的唯一核心方法是使用glBufferData
或glBufferSubData
。
答案 2 :(得分:1)
" best"传输缓冲区的方法取决于数据访问模式和您要定位的OpenGL驱动程序。这是一篇关于在OpenGL ES 2.0上选择众多选项的精彩文章:
http://hacksoflife.blogspot.com/2013/04/there-must-be-50-ways-to-draw-your.html
这是一篇关于类似技术的新文章。从OpenGL 4.5开始,持久映射似乎是最先进的:
https://www.opengl.org/wiki/Buffer_Object_Streaming
最后,这本书" Open GL Insights"有一个关于这个问题的章节,它包含在免费预览中:
http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-AsynchronousBufferTransfers.pdf