1

我一直在做一个新游戏,终于到了开始编写主角动作的地步,但我对如何做到这一点存有疑问。

以前,我在 Allegro 中制作了两个游戏,所以 spritesheets 很容易实现,因为我在图像上建立了帧和位置,并将每一帧保存在不同的位图中,但我知道用 OpenGL 这样做是不必要的并且花费更多。

所以,我一直在考虑如何保存我的 spritesheet 并在我的程序中使用,我只有一个想法。

我加载了图像并转换为纹理,在帮助我制作动画的函数中,我只需抓取纹理的一部分进行绘制,而不是将每个纹理存储在我的程序中。

这是最好的方法吗?

预先感谢您的帮助。

4

3 回答 3

3

你在正确的轨道上。

需要考虑的事项:

  • 在每个精灵周围留出足够的死区,以便视频卡不会以小比例混合来自相邻精灵的纹素。
  • 适当地设置纹理 min/mag 过滤。如果您想要块状外观,则 GL_NEAREST 是可以的。
  • 如果您想花哨并节省一些纹理内存,则没有理由必须将精灵布置在常规网格中。较小的精灵可以在纹理中更紧密地包装。
  • 如果您的精灵是从 3D 模型渲染的,您可以将模型中的法线和置换贴图输出到另一个纹理中,然后将它们组合到片段着色器中以获得一些很棒的照明和自阴影。
于 2011-06-24T03:53:25.087 回答
1

你有正确的想法,如果你有一堆精灵,最好将它们全部粘贴在一个大纹理中。只需将您的精灵绘制为纹理四边形,其纹理坐标索引到精灵的框架中。您可以进行一些优化,但其中大部分都围绕着尝试充分利用纹理内存并将精灵紧密打包在一起而不会出现混合问题。

于 2011-06-24T03:55:02.307 回答
0

我知道用 OpenGL 这样做是不必要的,而且成本更高。

为什么不?将大量精灵放入单个纹理中并没有真正的缺点。您需要做的就是更改纹理坐标以从纹理中挑选出有问题的区域。

于 2011-06-24T03:52:55.240 回答