在GLSL中,outputColour = vec3(0, 0, 0.5)
输出的RGB值为(0, 0, 127)
而不是(0, 0, 128)
。由GL.ReadPixels()
和Photoshop吸管工具确认。
目前我已经绕过outputColour.b += 0.001
的问题,但我相信以后会再次困扰我。
以前有没有人体验过这个问题,解决方案是什么?
答案 0 :(得分:4)
每当要求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
的电话。