GLSL颜色输出作为RGB关闭一个

时间:2017-06-15 00:34:30

标签: opengl glsl

在GLSL中,outputColour = vec3(0, 0, 0.5)输出的RGB值为(0, 0, 127)而不是(0, 0, 128)。由GL.ReadPixels()和Photoshop吸管工具确认。

目前我已经绕过outputColour.b += 0.001的问题,但我相信以后会再次困扰我。

以前有没有人体验过这个问题,解决方案是什么?

1 个答案:

答案 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的电话。