gpt4 book ai didi

c++ - 使用 OpenGL 的 2D Sprite 动画技术

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:51 32 4
gpt4 key购买 nike

我目前正在尝试使用 OpenGL 4 设置 2D Sprite 动画。例如,我用 Gimp 设计了一个平滑旋转的球。大约有 32 帧(4 行 8 帧)。

我的目标是在 2D 纹理中创建一个 Sprite 图集,并将我的 Sprite 数据存储在缓冲区 (VBO) 中。我的 sprite 矩形将始终相同(即 rect(0,0,32,32) ),但每次帧索引递增时我的纹理坐标都会改变。

请问如何修改坐标

  1. 因为 Sprite 图 block 存储在多行中,如果在着色器中似乎难以管理的话。
  2. 使用 glBufferSubData() 修改缓冲区内的 Sprite 纹理坐标?

我花了很多时间在 OpenGL 1.x 上……几个月前我又回到了 OpenGL 上,但我意识到很多事情都发生了变化。虽然我会尝试多种选择,但欢迎您提出建议和经验。

最佳答案

As the sprite tiles are stored on several rows if appears to be difficult to manage it in the shader.

并非如此,您所有的 Sprite 都具有相同的大小,因此您会得到一个完美的统一网格,从一些一维索引到二维索引只是除法和取模的问题。并不难。

但是,为什么还要将单个帧存储在 mxn 网格中?现在您可以将它们存储在一行中。但是,在现代 GL 中,我们有 array textures .这些基本上是一组独立的 2D 图层,大小都相同。您只需通过 3D 坐标访问它们,第三个坐标是从 o 到 n-1 的层。这非常适合您的用例,并且将消除边界处的任何纹理过滤/出血问题,并且它也可以很好地与 mipmapping 配合使用(如果您需要的话)。引入数组纹理时,实现需要支持的最小层数为 64(现在要高得多),因此即使对于旧 GPU,32 帧也小菜一碟。

关于c++ - 使用 OpenGL 的 2D Sprite 动画技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27747246/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com