【发布时间】:2012-03-28 03:45:29
【问题描述】:
因此,我在一个简洁的小系统中设置了我的框架,以将 SDL、openGL 和 box2D 封装在一起,用于 2D 游戏。
现在它的工作原理是我创建一个“GameObject”类的对象,指定一个“源PNG”,然后它会自动创建一个openGL纹理和一个相同尺寸的box2d主体。
现在我担心是否开始需要在屏幕上渲染许多不同的纹理。
是否可以在运行时加载我的所有精灵表,然后将它们全部组合成一个纹理?如果是这样,怎么做?什么是实现它的好方法(这样我就不必手动指定任何参数或任何东西)。
我想在运行时而不是预先完成的原因是,我可以轻松地将某个级别的所有(或大部分)图块、敌人等加载到这个纹理中,因为每个级别不会有相同的敌人。它还可以让整个艺术创作过程变得更容易。
【问题讨论】:
-
多少是多少?我会更担心重用现有纹理——引擎会处理这个吗?
-
我想我最多可以同时拥有 100 种不同的纹理,所以这将是 100 次绑定操作。另外,当您说重用现有纹理时,您的意思是,如果我有一个使用了 12 次的某个图块,引擎应该在仅绑定一次而不是重新绑定时绘制它 12 次,对吗?那将是一个好主意..有什么方法可以检查当前绑定了哪个纹理,所以我不重新绑定它?或者我是否必须创建一个系统来将相同的纹理绘制在一起以减少绑定......但是如果我想按特定顺序绘制它们以进行深度排序怎么办?
-
是的,没错——这会保存绑定。第二条评论更针对具有相同数据的纹理,忘记了。