我一直在开发一款新游戏,终于到了开始编写主要角色 Action 代码的地步,但我对如何做到这一点有疑问。
以前,我在 Allegro 中制作了两个游戏,所以 spritesheet 很容易实现,因为我在图像上建立了帧和位置,并将每一帧保存在不同的位图中,但我知道使用 OpenGL 可以做到这一点它不是必需的,而且要多花一点钱。
所以,我一直在考虑如何保存我的 spritesheet 并在我的程序中使用,但我只有一个想法。
我加载了图像并在纹理中进行了转换,在帮助我制作动画的函数中,我只是抓取一部分纹理进行绘制,而不是将每个纹理都存储在我的程序中。
这是最好的方法吗?
预先感谢您的帮助。
最佳答案
你走在正确的轨道上。
需要考虑的事项:
- 在每个 sprite 周围留出足够的死角,这样视频卡就不会在小尺度上混入相邻 sprite 的纹素。
- 适当设置纹理最小/放大过滤。如果您想要 block 状外观,GL_NEAREST 是可以的。
- 如果您想花哨并节省一些纹理内存,则没有理由必须将 Sprite 布置在规则的网格中。较小的 Sprite 可以在纹理中挤得更近。
- 如果您的 sprite 是从 3D 模型渲染的,您可以将模型的法线和置换贴图输出到另一个纹理中,然后将它们组合在片段着色器中以获得一些很棒的光照和自阴影。
关于c++ - 使用 OpenGL 和 SDL 的 Sprite 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463122/