繁体   English   中英

如何在OpenGL中完全像glRotatef()那样旋转顶点?

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

我需要优化渲染代码,目前我正在使用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章。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM