【发布时间】:2011-07-13 14:03:59
【问题描述】:
我正在使用 OpenGL ES 2.0 编写一个小型 2D 游戏引擎。它可以工作,但对于中等规模的场景,目前感觉有点迟钝。我将它设计成每个游戏对象都是一棵节点树,每个节点都是原始形状(三角形、正方形、圆形)。每个节点都可以在创建时和运行时应用任意一组转换。
为了说明,“头”节点是一个圆,它有一个子“帽子”节点,它是一个三角形,通过平移变换将其移动到圆的顶部。现在,在运行时,我可以通过头部的动画平移变换来移动头部,帽子也随之移动。或者,我可以在运行时动态地在帽子上应用旋转变换,为“帽子尖”设置动画。
在渲染时,每个节点都应用自己的静态变换(帽子向上移动),然后是任何动态平移(帽子尖),然后对每个父节点依次类推。每个节点有三个矩阵,每个应用的动态动画还有另外三个矩阵。对于深度树,这增加了很多矩阵数学。
如果可能的话,将其推送到 GPU 似乎是一件好事,但由于动画是动态应用的,因此我不知道每个节点将经历多少次变换才能编写着色器来处理它。我是 OpenGL ES 2.0 和游戏引擎设计的新手,不了解所有限制。
我的问题是……
- 我是不是完全不符合“好的”游戏引擎设计?
- 这确实是 CPU 或 GPU 的任务吗?
- 能否编写 OpenGL 2.0 ES 着色器来处理符合我的“对象树”设计和运行时应用动画矩阵的任意数量的转换?
【问题讨论】:
标签: opengl-es opengl-es-2.0 game-engine