在OpenGL ES 2.0中创建一个sprite类

时间:2012-07-31 19:27:18

标签: iphone objective-c opengl-es opengl-es-2.0 vbo

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

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

我有点不知所措,因为我正在开始使用OpenGL,感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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

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