《OpenGL顶点数据传输速度优化》
作者: 游蓝海
文章链接:http://blog.csdn.net/you_lan_hai/article/details/50994121
转载请注明出处
前言
最近在给cocos2d-x v2.x的一个项目做渲染优化,执行渲染批处理(Batch)的时候,发现顶点数据传输速度很慢,实在是颠覆了我的OpenGL认知。
常规的Batch原理:
· 将渲染命令加入到一个缓冲区当中
· 根据需求对渲染命令进行排序
· 合并所有命令的顶点数据
· 提交顶点数据
· 根据不同材质分批次渲染
传输顶点数据用到的两个API:
void glBufferData(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);
void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data);
glBufferData
会分配一块新的内存,供程序存放数据。glBufferSubData
会使用之前已经分配过的内存来存放数据。