0

        我正在努力在 OpenGL ES 2.0 中制作一个精灵类,并且已经成功了。目前我有一个精灵的渲染方法,它由我的 EAGL 层中的渲染方法每隔一段时间调用一次。每次调用渲染时我都在创建新的顶点缓冲区和索引缓冲区,但效率不高,所以我调用了 glremovebuffer。不幸的是,当我这样做时,帧速率会显着降低。

        所以目前我在初始化时创建了 vbo 和 ibo,它们在帧速率和内存消耗方面工作正常,但无法更新位置。

        由于我刚刚开始使用 OpenGL,因此我有点不知所措,感谢您提供任何帮助。

4

1 回答 1

1

通常,您希望使用位于模型原点的 VBO 和 IBO 创建一次精灵。要平移、旋转和缩放,您将使用模型矩阵将您的精灵转换到所需的位置。

我相当确定 iphone sdk 提供了一些很好的功能来做到这一点,但我不知道其中任何一个:) 基本上,在你的着色器中,你获取你的位置坐标,然后将它乘以一个或多个矩阵,其中之一这些矩阵是模型矩阵,您可以将其更改为平移、旋转、缩放或这些矩阵的任何组合(实际上,它可以是您想要的任何矩阵,它会产生不同的结果)。

有很多资源可以解释这些转换矩阵。这是一个例子: http ://db-in.com/blog/2011/04/cameras-on-opengl-es-2-x/

我的建议是找到一个与您的理解水平相同的教程并从中学习......

于 2012-07-31T19:39:13.927 回答