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);

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值