opengl|es - 2D繪製

本文關注的是基於SDL的OPENGL|ES(下文簡稱ES)的2D繪製的實現方式。

ES中常見的實現2D的方法是使用正投影,然後繪製2D紋理

       

這裏有三個問題,

其一SDL與ES的座標系統不同,SDL的(0,0)在屏幕的左上角,而ES的在屏幕的左下角,這裏可以使用上下反轉的正投影來解決,或者在每次繪製前使用如下的變換,

 

其二OPENGL認爲自己擁有整個屏幕,對於顯示緩存,只能使用OPENGL進行控制

其三在OPENGL與SDL之間的BLIT,當SDL選擇OPENGL模式的時候(OPENGLBLIT模式是不被推薦的)是不能之間進行的,這裏使用了技巧,是將SDL的緩存轉換成了OPENGL的材質,然後供OPENGL的2D顯示使用,如下

 

最後值得注意的是,ES在紋理繪製時選擇使用glDrawElements函數,其最後一個參數是索引值,由於OPENGL是狀態機驅動的,整個座標系統是提前將狀態設置好的,不用總是在困擾與這個東西是如何繪製出來,呵呵,如下是glDrawElements的使用方式 

 

發佈了44 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章