OpenGL 11中无法使用蓝色颜色值的技术问题咨询
OpenGL glColor4f 蓝色着色失效问题解决
核心原因
GL11.glColor4f的参数要求是0.0到1.0之间的归一化浮点数,你传入的85、255这类整数完全超出了合法范围。部分驱动会对超范围值做截断处理(比如强制设为1.0),所以绿色通道生效只是巧合,但蓝色通道在这种非法参数下触发了驱动的异常处理,导致着色失效。
修复方法
把RGB值除以255转换成0-1的浮点数,正确写法应为:
GL11.glColor4f(85/255.0f, 255/255.0f, 255/255.0f, 1.0f);
或者简化为:
GL11.glColor4f(0.333f, 1.0f, 1.0f, 1.0f);
额外排查点
如果转换后仍无效果,检查以下设置:
- 是否开启了顶点颜色数组(
glEnableClientState(GL_COLOR_ARRAY)),这会覆盖glColor4f的全局颜色设置 - 是否启用了纹理,且
glTexEnv的混合模式设置导致颜色被纹理覆盖 - 是否通过
glColorMask禁用了蓝色通道的写入
内容的提问来源于stack exchange,提问作者FirephoenixX02
相关产品推荐
相关产品推荐

