0
在GLSL中,outputColour = vec3(0, 0, 0.5)
输出RGB值为(0, 0, 127)
而不是(0, 0, 128)
。由GL.ReadPixels()
和Photoshop吸管工具确认。GLSL颜色输出与RGB相差一个
目前我正在绕过outputColour.b += 0.001
这个问题,但我确定会在以后再次出现。
有没有任何机构经历过这个,以及解决方案是什么?
在GLSL中,outputColour = vec3(0, 0, 0.5)
输出RGB值为(0, 0, 127)
而不是(0, 0, 128)
。由GL.ReadPixels()
和Photoshop吸管工具确认。GLSL颜色输出与RGB相差一个
目前我正在绕过outputColour.b += 0.001
这个问题,但我确定会在以后再次出现。
有没有任何机构经历过这个,以及解决方案是什么?
每当OpenGL被要求convert a float to a normalized integer时,允许实现舍入,但它喜欢。所以如果它想剔除小数,那很好。
如果您需要控制规范化的舍入,然后直接控制它。
vec4 NormalizeColor(in vec4 input)
{
vec4 denorm = input * 255.0;
vec4 rounded = round(denorm);
return rounded/255.0;
}
你可以用你喜欢的任何东西来替换呼叫round
。
它是有道理的,因为8位最大值是255.尝试'128.0/255.0' – 1000ml