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
。
然后将模型视图矩阵应用于使用glVertex
、glDrawArrays
等渲染的任何几何图形。
OpenGL 端矩阵现已弃用。如果您使用核心 OpenGL 3+,这些功能将不再可用。如果您是 OpenGL 新手,我建议您跳过学习旧方法并专注于现代、面向着色器的 OpenGL。您可以查看以下链接以获取一些不错的教程。
-
open.gl
opengl-tutorial.org
ogldev
【讨论】:
以上是关于OpenGL:glRotatef 旋转啥?的主要内容,如果未能解决你的问题,请参考以下文章