关于opengl中glColor3f的应用

在使用OpenGL进行图形渲染时,glColor3f设置的颜色会影响后续的渲染操作,因为OpenGL是一个状态机。理解这一特性后,若要避免颜色混淆,需在绘制不同图形前分别设置颜色状态。例如,绘制红色的A、蓝色的B和绿色的C,需确保在每个draw函数前调用相应的glColor3f。错误的顺序会导致颜色应用错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做毕设时发现glColor3f会互相影响,想着说是否可以排除glColor3f的影响?

后来发现其实没必要,其就是opengl是状态机,也就是设置一个状态后它就保持那个状态进行渲染

因此如果要排除glColor3f的影响就要重新设置颜色状态

PS:各种颜色对应的参数(转别人的)

glColor3f(0.0, 0.0, 0.0);  --> 黑色 

glColor3f(1.0, 0.0, 0.0);  --> 红色 

glColor3f(0.0, 1.0, 0.0);  --> 绿色

glColor3f(0.0, 0.0, 1.0);  --> 蓝色 

glColor3f(1.0, 1.0, 0.0);  --> 黄色 

glColor3f(0.0, 1.0, 1.0);  --> 青色  

glColor3f(1.0, 1.0, 1.0);  --> 白色


如想要对图形A用红色,图形B用蓝色,图形C用绿色

则代码应该这么写

glColor3f(1,0,0);

draw_A();

glColor3f(0,0,1);

draw_B();

glColor3f(0,1,0);

draw_C();

如果按下面的写法则会产生不同的效果

glColor3f(1,0,0);

draw_A();

draw_B();

glColor3f(0,1,0);

draw_C();

glColor3f(1,0,0);

draw_B();

绘制出的图形及颜色分别为

A:红    B:红  C:绿   B:红


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值