2D中最基本的是渲染一個圖片,OpenGL接口中想到的有以下幾種方式:
直接將圖像數據寫到顏色緩沖區中,不夠靈活,而且移動設備端不支持。
opengles1.0標准支持,
1)將圖像數據上傳到OpenGL服務器顯存,創建紋理對象;
2)將頂點數據上傳到OpenGL服務器顯存,然後走OpenGL固定流水線最終顯示到屏幕。
這種傳統做法缺點:每次繪制都需要將頂點上傳到opengl顯存,頂點上傳需要CPU的參與,會導致GPU阻塞等待。。。紋理對象只需一次即可緩存在顯存中。
opengles1.1 標准支持,具體參見 Android sdk :ApiDemos\src\com\example\android\apis\graphics\spritetext\LabelMarker.java中使用了該函數。
該方法既然opengles1.1專門增加的,性能肯定優於draw_texture_quad,個人理解:直接把頂點寫入高速顯存,頂點上傳不需要CPU參與。
需要opengles1.1支持,相比draw_texture_quad,VBO方式頂點只需要上傳一次,在OpenGL顯存中建立頂點緩沖區對象。
性能是最佳的,尤其是頂點的模型視圖變換較復雜。具體vbo參見:http://www.linuxidc.com/Linux/2014-03/98797.htm
4 > 3 > 2 > 1