当前位置: 华文问答 > 数码

如何用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

----