0

我需要优化我的渲染代码,目前我正在使用 glPushMatrix() 与 glTranslatef() 和 glRotatef()。但这比在单个顶点数组调用中渲染所有对象的成本更高。

OpenGL 中是否有一些快速内置函数可以像 glRotatef() 一样旋转我的顶点数据?如果没有,您会推荐使用什么库或方法?我知道的唯一方法是使用 sin/cos 函数来旋转顶点,但我不确定这是否是最快的方法,或者它是否会产生相同的结果。

每个对象我只需要沿一个轴旋转一次(2D 渲染),因此它不需要非常复杂或支持 glPushMatrix() 系统的全部潜力。

编辑:我不想为此使用着色器。

Edit2:我只渲染沿零点旋转的单个四边形(在 2D 模式下),因此例如每个顶点的值将从 -10 变为 10。我当前的代码:((quad.vert[i].x*cosval)-(quad.vert[i].y*sinval)两次,对于 y 也是)。

4

1 回答 1

4

我假设您使用的是旧版本的 OpenGL,因为您使用的是 OpenGLglRotate和真正古老/奇怪的硬件,因为您不想使用着色器。

您可以将glRotate*()调用放在显示列表中,或者自己计算旋转矩阵。OpenGL 红皮书的第 3 章和附录 F提供了您自己构建矩阵所需的信息。有关显示列表的更多信息,请参阅第 7 章。

于 2012-04-29T18:21:06.937 回答