首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

何时调用glMatrixMode()

glMatrixMode()是OpenGL中的一个函数,用于指定当前矩阵模式。矩阵模式是指OpenGL用来进行矩阵变换的方式,包括模型视图矩阵、投影矩阵和纹理矩阵。

glMatrixMode()函数的调用时机取决于具体的应用需求和场景。一般情况下,glMatrixMode()函数会在OpenGL初始化时被调用,用于设置初始的矩阵模式。在绘制过程中,根据需要进行矩阵变换时,也会调用glMatrixMode()来切换矩阵模式。

常见的矩阵模式包括:

  1. GL_MODELVIEW:用于定义模型视图矩阵,控制物体在世界坐标系中的位置、旋转和缩放。在绘制物体时,通常会先调用glMatrixMode(GL_MODELVIEW)来指定矩阵模式,然后使用glLoadIdentity()来重置当前矩阵为单位矩阵,再通过glTranslatef()、glRotatef()和glScalef()等函数来进行具体的变换操作。
  2. GL_PROJECTION:用于定义投影矩阵,控制物体在相机坐标系中的投影方式,包括透视投影和正交投影。在绘制场景时,通常会先调用glMatrixMode(GL_PROJECTION)来指定矩阵模式,然后使用glLoadIdentity()来重置当前矩阵为单位矩阵,再通过glFrustum()或glOrtho()等函数来设置具体的投影方式。
  3. GL_TEXTURE:用于定义纹理矩阵,控制纹理坐标的变换。在绘制带有纹理的物体时,通常会先调用glMatrixMode(GL_TEXTURE)来指定矩阵模式,然后使用glLoadIdentity()来重置当前矩阵为单位矩阵,再通过glTranslatef()、glRotatef()和glScalef()等函数来进行纹理坐标的变换操作。

glMatrixMode()函数的调用示例:

代码语言:cpp
复制
glMatrixMode(GL_MODELVIEW);  // 切换到模型视图矩阵模式
glLoadIdentity();  // 重置当前矩阵为单位矩阵
glTranslatef(1.0f, 0.0f, 0.0f);  // 平移变换
glRotatef(45.0f, 0.0f, 1.0f, 0.0f);  // 旋转变换

glMatrixMode(GL_PROJECTION);  // 切换到投影矩阵模式
glLoadIdentity();  // 重置当前矩阵为单位矩阵
glFrustum(-1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 10.0f);  // 透视投影变换

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 实验5 OpenGL模型视图变换

    设置的方法是以GL_MODELVIEW为参数调用glMatrixMode函数,像这样: glMatrixMode(GL_MODELVIEW); 该语句指定一个4×4的建模矩阵作为当前矩阵。...当我们需要保存时,调用glPushMatrix()函数,它相当于把当前矩阵压入堆栈。当需要恢复最近一次的保存时,调用glPopMatrix()函数,它相当于从堆栈栈顶弹出一个矩阵为当前矩阵。...使用glMatrixMode来指定当前操作的究竟是模型视图矩阵还是投影矩阵。 在代码中,视图变换必须出现在模型变换之前,但可以在绘图之前的任何时候执行投影变换和视口变换。...首先,调用初始的glRotate*()函数对局部坐标系统进行旋转,这个局部坐标系统最初与全局固定坐标系统是一致的。接着,可以调用glTranslate*()把局部坐标系统移动到行星轨道上的一个位置。...第二次调用glRotate*()使局部坐标轴进行旋转,因此确定了这颗行星在一天中的时间。当调用了这些函数变换之后,就可以绘制这颗行星了。 5. 实验作业: (1)尝试在太阳系中增加一颗卫星,一颗行星。

    1.6K30

    投影矩阵 视图模型矩阵「建议收藏」

    OpenGL在设置场景时,要用到两个矩阵:投影矩阵 和 模型视图矩阵通过glMatrixMode来指定下面的矩阵操作是针对哪一个矩阵进行的。...gluPerspective 等函数只根据其参数计算出一个矩阵M,然后与当前的栈顶元素T相乘;但这些函数本身不能自动找到应该对应的矩阵堆栈,你可以将它们放在任何矩阵堆栈操作中,比如可以将gluLookatup放在glMatrixMode...(GL_PROJECTION)的后面,则视点矩阵与投影矩阵堆栈的当前栈顶元素相乘得到一个新的投影矩阵,这样在某些情况下也可以得到正确的结果,但之后可能出错,若设置glMatrixMode(GL_MODELVIEW...在代码中,视图(点)变换应该出现在模型变换之前,令模型变换首先作用于顶点,即 glMatrixMode(GL_MODELVIEW);glLoadIdentity(); // I 单位矩阵<br...(OpenGL为列主序矩阵,转置) 但可以在绘图之前的任何时候执行投影变换和视口变换。 视锥体的设置: 投影变换创建了一个六面体,位于视锥体内的模型才能被看到,而外面的模型则被裁剪掉。

    49920
    领券