Zye*_*end 4 c++ opengl animation vbo sprite
我目前正在尝试使用 OpenGL 4 设置 2D 精灵动画。例如,我用 Gimp 设计了一个平滑旋转的球。大约有 32 个框架(4 行 8 个框架)。
我的目标是在 2D 纹理中创建精灵图集,并将精灵数据存储在缓冲区 (VBO) 中。我的精灵矩形将始终相同(即 rect(0,0,32,32) ),但每次帧索引递增时,我的纹理坐标都会发生变化。
我想知道如何修改坐标。
我花了很多时间研究 OpenGL 1.x……几个月前我又回到了 OpenGL,但我意识到很多事情都发生了变化。我会尝试几种选择,但欢迎您的建议和经验。
由于精灵图块存储在几行中,因此在着色器中管理起来似乎很困难。
并非如此,所有精灵的大小都相同,因此您会得到一个完美的统一网格,并且从某个一维索引到二维只是除法和取模的问题。并不难。
但是,为什么要将单个帧存储在mxn网格中呢?现在您可以将它们存储在一排中。然而,在现代 GL 中,我们有数组纹理。这些基本上是一组独立的 2D 层,全部大小相同。您只需通过 3D 坐标访问它们,第三个坐标是从 o 到 n-1 的图层。这非常适合您的用例,并且将消除边界处的纹理过滤/渗色的任何问题,并且它也可以很好地与 mipmapping 配合使用(如果您需要的话)。当引入阵列纹理时,实现需要支持的最小层数为 64(现在要高得多),因此即使对于旧 GPU,32 帧也将是小菜一碟。
| 归档时间: |
|
| 查看次数: |
11018 次 |
| 最近记录: |