不写图形好多年,但扫了一眼你的代码,见你这样就想 「封装一个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 gamesEJoy2D:
GitHub - ejoy/ejoy2d: A 2D Graphics Engine for Mobile Game----