當前位置: 華文問答 > 數位

如何用OpenGL封裝一個2D引擎?

2016-08-20數位

不寫圖形好多年,但掃了一眼你的程式碼,見你這樣就想 「封裝一個2D引擎」 了?還是十分驚訝:

1. 別用什麽 glBegin/glEnd,至少寫相容GLES2程式碼,不然手機上跑不起來。

2. 打算用點來拼湊出一個個位圖來麽?這樣還不如直接用gdi,它更適合你。

3. 你得用兩個三角形的紋理拼湊出一個2D的圖塊出來,不是搞啥每個點自己畫。

4. 2D影像庫基本就是要把顯示物件樹給做出來就得了。

5. 每個顯示物件除了自己外還有很多兒子節點。

6. 每個顯示物件有一個變換矩陣,用來設定位置和角度還有縮放,最後是節點的顯示效果。

7. 渲染的時候需要從遠到近排序,並盡量歸並相同效果(fs)及紋理。

8. 把常用紋理管理起來,提供資源載入,可以換進換出,提供類 LRU的機制。

9. 在此基礎上提供一些動畫(精靈)和場景控制的api,提供顯示字型,即可。

最後問一句,你看的都是些幾百年前的書啊?

先找兩個現成的輕量級2D引擎讀讀吧:

StarEngine:

GitHub - StarEngine/engine: Crossplatform C++11 2D Game Engine for Desktop and Mobile games

EJoy2D:

GitHub - ejoy/ejoy2d: A 2D Graphics Engine for Mobile Game

----