【问题标题】:OpenGL - VBOs for 2D Rendering theoretical animation issuesOpenGL - 用于 2D 渲染的 VBO 理论动画问题
【发布时间】:2013-07-28 06:09:35
【问题描述】:

所以最近我决定创建一个游戏并使用新版本的 OpenGL 来完成它(注意:游戏是 2D 的)。

到目前为止,我为每个可绘制的类都有一个 VBO。我这样做是为了避免一个类的 1 个实例(6 * 3 个元素)有一个 VBO。现在您知道渲染 VBO 之前绑定纹理。现在的问题是我开始实现动画然后我意识到动画是不可能通过这种方式实现的,我无法渲染一个可能包含 5 个海龟的 VBO,每个海龟具有不同的纹理(每个动画的不同纹理关键帧)。

总结一下,这就是问题所在: * 一个 VBO 拥有多个海龟。一只乌龟决定攻击。通过切换到攻击纹理开始动画。使成为。 VBO 中的所有海龟都在攻击。*

现在是这个问题:

  • 有没有办法在着色器中切换纹理?
  • 如果上述方法不可行,我该怎么办?

【问题讨论】:

  • "一个 VBO 拥有多只海龟" 你有没有想过这可能是你的问题?一般来说,2D 游戏具有相当短暂的网格数据。您将不得不经常更改顶点数据,因此您应该接受这一点。这意味着每个对象都需要自己的顶点数据。
  • 那你在说什么?对一只乌龟使用一个 VBO?
  • 你有多少缓冲区对象完全无关紧要。您需要做的是停止让每只乌龟使用相同的顶点数据,就好像每只乌龟都是另一个乌龟的克隆一样。他们可以共享顶点数据的存储空间,但他们不能自己共享实际的顶点。
  • 他们没有。它们共享的只是相同的 FloatBuffer 和相同的 textureID
  • VBO 为每只海龟保存 6*3 个元素。

标签: opengl animation shader textures vbo


【解决方案1】:

找到我自己的解决方案:

对于每个可以具有动画的对象,制作一个 spritesheet,然后只更改 ST 坐标,而不是为下一帧重新绑定纹理。

【讨论】:

  • 我听说过,但我觉得 spritesheets 也能完成这项工作,而且对帧数没有限制..(所以它们几乎更好,更容易处理)
猜你喜欢
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多