OpenGL ES 2D渲染性能
2D中最基本的是渲染一个图片,OpenGL接口中想到的有以下几种方式:
1. glDrawPixels
直接将图像数据写到颜色缓冲区中,不够灵活,而且移动设备端不支持。
2. draw_texture_quad
opengles1.0标准支持,
1)将图像数据上传到OpenGL服务器显存,创建纹理对象;
2)将顶点数据上传到OpenGL服务器显存,然后走OpenGL固定流水线最终显示到屏幕。
这种传统做法缺点:每次绘制都需要将顶点上传到opengl显存,顶点上传需要CPU的参与,会导致GPU阻塞等待。。。纹理对象只需一次即可缓存在显存中。
3. glDrawTexiOES
opengles1.1 标准支持,具体参见 Android sdk :ApiDemos\src\com\example\android\apis\graphics\spritetext\LabelMarker.java中使用了该函数。
该方法既然opengles1.1专门增加的,性能肯定优于draw_texture_quad,个人理解:直接把顶点写入高速显存,顶点上传不需要CPU参与。
4. vertex buffer object 方式渲染
需要opengles1.1支持,相比draw_texture_quad,VBO方式顶点只需要上传一次,在OpenGL显存中建立顶点缓冲区对象。
结论
4 > 3 > 2 > 1
相关阅读:
相关推荐
夕加加 2020-07-20
shsshs 2020-06-13
夕加加 2020-06-13
图形学与可视化 2020-06-11
shsshs 2020-05-05
alexazh 2020-05-03
夕加加 2020-04-23
sxaudq0 2020-04-14
qiangbizhi 2020-04-09
alexazh 2020-03-06
sxaudq0 2020-02-23
夕加加 2020-02-15
sxaudq0 2020-01-18
夕加加 2020-01-06
shsshs 2019-12-27
shsshs 2019-12-05
dayenglish 2013-07-12