OpenGL:我是否应该始终自行剪辑glColor * f值?

4

这可能听起来很蠢...但我一直在想,如果我向glColor * f函数发送大于1.0f的值,这会有影响吗?

旧的图形卡/驱动程序是否以不同的方式处理这些值?OpenGL直接使用我提供的颜色值,还是自行裁剪它?我应该停止执行if(r > 1.0f) r = 1.0f;吗?更大的值是否会导致意外行为?

我似乎无法让大于1.0f的值产生任何不同的效果。

2个回答

4

manpage中得知:

在更新当前颜色之前,浮点数和有符号整数值都不会被夹在范围[0,1]内。但是,在插值或写入颜色缓冲区之前,颜色分量将被夹在此范围内。


那么,如果您有一些直通路径到帧缓冲区,则大于1.0的值在效果上将无法区分与1.0;如果进行任何算术运算(例如使用灯光和glEnable(GL_COLOR_MATERIAL)),则输出可能会有所不同。 - Tommy
1
换句话说,你应该将它们夹紧。 - Alexander Dzhoganov

2

OpenGL会自动将值夹在[0, 1]范围内。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接