OpenGL总结7-颜色与纹理共存

在使用OpenGL进行纹理贴图后,我需要在上面画一些线作为辅助,但是当我进行画线的时候发现glColor中的颜色会覆盖到纹理上,导致纹理的颜色很奇怪,经过查找资料和尝试发现了问题所在。

首先,纹理在不使用的时候一定要进行关闭,因为如果不将纹理进行关闭,后面在绘图的时候会影响到纹理。其次,要对颜色进行保存,也就是压栈glPushAttrib,这样对颜色进行保存后才能保证画线的颜色不会影响到其他图像。

参考代码

//GLfloat	fCurrentColor[4];
//glGetFloatv(GL_CURRENT_COLOR, fCurrentColor);
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_CURRENT_BIT);//这里将颜色等属性进行压栈
glLineWidth(3.0);
glBegin(GL_LINES);
glColor3fv(lineColor);
glVertex3f(begin.x(), 0.0, begin.y());
glVertex3f(end.x(), 0.0, end.y());
glEnd();
glPopAttrib();//最后要弹出
//glColor4fv(fCurrentColor);

注释的三行代码是另一种方式,可以用这三行代码代替属性的压栈和出栈,它们的作用效果是一样的。

注释的代码表示对颜色进行保存,最后恢复到保存的颜色。

你可能感兴趣的:(OpenGL)