OpenGL:glRotatef 旋转啥?

Posted

技术标签:

【中文标题】OpenGL:glRotatef 旋转啥?【英文标题】:OpenGL: What does glRotatef rotate?OpenGL:glRotatef 旋转什么? 【发布时间】:2014-08-13 18:19:05 【问题描述】:

当我像这样拨打glRotatef 时:

glRotatef(angle,0.0,1.0,0.0) //rotate about y-axis

我知道它是围绕y axis 旋转angle 度。 但是,什么在这里被轮换了?究竟是哪个对象?

可能是一个愚蠢的问题,但我对此完全陌生。

我能够使用答案 here 围绕它的端点旋转一条线,但我不太了解它在内部是如何工作的。

【问题讨论】:

【参考方案1】:

没有旋转,因为 OpenGL 不“存储”对象。

glRotatef,和glMultMatrixf一样,用来修改当前选中的变换矩阵。这会影响随后的绘制方式。一个人根据自己的需要设置矩阵(和其他东西!),然后绘制自己的对象。

有关更多信息,请参阅 OpenGL 红皮书,并在 Google 上搜索“保留模式”和“立即模式”之间的区别。

【讨论】:

OpenGL 不仅不存储对象,它实际上没有对象的概念概念。 @sanjeevmk 变换矩阵应用到你使用glVertex传入的顶点。【参考方案2】:

glRotate 将作用于当前矩阵,默认为GL_MODELVIEW。这样做会影响您在序列中绘制的任何 3D 对象。当前矩阵更改为glMatrixMode。 然后将模型视图矩阵应用于使用glVertexglDrawArrays 等渲染的任何几何图形。

OpenGL 端矩阵现已弃用。如果您使用核心 OpenGL 3+,这些功能将不再可用。如果您是 OpenGL 新手,我建议您跳过学习旧方法并专注于现代、面向着色器的 OpenGL。您可以查看以下链接以获取一些不错的教程。

    open.gl opengl-tutorial.org ogldev

【讨论】:

以上是关于OpenGL:glRotatef 旋转啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 gl.glrotatef 旋转对象

OpenGL glRotatef

glRotatef() 在 Opengl 中的工作很奇怪

使用 glRotatef() 时的 OpenGL 坐标问题

在 OpenGL 中旋转对象

OpenGL使旋转函数给出向量