openGL中材质需要设置glMatrixMode(GL_MODELVIEW)吗?
时间: 2024-02-16 12:01:35 浏览: 31
不需要。`glMatrixMode(GL_MODELVIEW)`是OpenGL中的矩阵模式,用于指定接下来要对模型视图矩阵进行操作。而材质的设置与矩阵模式无关,可以在任何矩阵模式下进行设置。一般来说,设置材质的步骤是:
1. 开启材质功能:`glEnable(GL_LIGHTING); glEnable(GL_COLOR_MATERIAL);`
2. 设置材质的反射属性:`glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular); glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess);`
3. 设置材质对光照的响应方式(单面或双面):`glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);`
需要注意的是,在设置材质之前,需要先开启光照功能:`glEnable(GL_LIGHTING);`。
相关问题
openGL中设置光照之前需要设置glMatrixMode(GL_MODELVIEW)吗?
需要。在OpenGL中,设置光照需要通过对模型视图矩阵进行操作来实现。而指定接下来要对模型视图矩阵进行操作,需要先调用`glMatrixMode(GL_MODELVIEW)`来设置当前矩阵模式为模型视图矩阵模式。因此,在设置光照之前需要先设置矩阵模式为模型视图矩阵模式。
一般来说,设置光照的步骤是:
1. 开启光照功能:`glEnable(GL_LIGHTING);`
2. 开启指定编号的光源:`glEnable(GL_LIGHT0);`
3. 设置光源的位置、颜色等属性:`glLightfv(GL_LIGHT0, GL_POSITION, position); glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, specular);`
4. 设置材质的反射属性:`glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular); glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess);`
需要注意的是,在设置光照之前,需要先设置好视口、投影矩阵和模型视图矩阵等参数,以保证光照的表现效果符合预期。
GL_MODELVIEW
GL_MODELVIEW是OpenGL中的一个矩阵堆栈,用于存储模型视图矩阵。模型视图矩阵是将模型从模型空间变换到观察者视角下的矩阵。在OpenGL中,我们可以通过对模型视图矩阵进行变换来实现物体的旋转、平移、缩放等操作。
GL_MODELVIEW矩阵堆栈可以通过glMatrixMode(GL_MODELVIEW)来激活,并且可以通过glPushMatrix()和glPopMatrix()来进行压栈和出栈操作。在进行绘制时,我们可以通过glLoadIdentity()来将当前的矩阵重置为单位矩阵,然后再进行变换操作。
需要注意的是,GL_MODELVIEW矩阵堆栈是一个古老的OpenGL特性,在现代OpenGL中已经被废弃。现代OpenGL中通常使用自定义的着色器来实现变换操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)