如何像在OpenGL中使用glRotatef()一样旋转顶点

How to rotate vertices exactly like with glRotatef() in OpenGL?

本文关键字:一样 顶点 旋转 glRotatef 何像 OpenGL      更新时间:2023-10-16

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

OpenGL 中是否有一些快速内置函数可以像 glRotatef(( 那样旋转我的顶点数据?如果没有,建议您使用哪种库或方法?我知道的唯一方法是使用 sin/cos 函数来旋转顶点,但我不确定这是否是最快的方法,或者它甚至会导致相同的结果。

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

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

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

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

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