歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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顯存中建立頂點緩沖區對象

性能是最佳的,尤其是頂點的模型視圖變換較復雜。具體vbo參見:http://www.linuxidc.com/Linux/2014-03/98797.htm

結論

4 > 3 > 2 > 1

Copyright © Linux教程網 All Rights Reserved