Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl GLSL颜色输出作为RGB关闭一次_Opengl_Glsl - Fatal编程技术网

Opengl GLSL颜色输出作为RGB关闭一次

Opengl GLSL颜色输出作为RGB关闭一次,opengl,glsl,Opengl,Glsl,在GLSL中,outputColour=vec3(0,0,0.5)输出的RGB值为(0,0,127),而不是(0,0,128)。由GL.ReadPixels()和Photoshop滴管工具确认 目前,我正在绕过outputColour.b+=0.001的问题,但我确信这会在以后困扰我 以前是否有任何机构经历过这种情况?解决方案是什么?每当要求OpenGL时,都允许实现按自己喜欢的方式进行取整。所以,如果它想去掉小数点,那没关系 如果需要控制标准化的舍入,则直接控制它 vec4 Normalize

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

目前,我正在绕过outputColour.b+=0.001的问题,但我确信这会在以后困扰我


以前是否有任何机构经历过这种情况?解决方案是什么?

每当要求OpenGL时,都允许实现按自己喜欢的方式进行取整。所以,如果它想去掉小数点,那没关系

如果需要控制标准化的舍入,则直接控制它

vec4 NormalizeColor(in vec4 input)
{
  vec4 denorm = input * 255.0;
  vec4 rounded = round(denorm);
  return rounded / 255.0;
}

您可以用任何您喜欢的方法来替换对
舍入的调用。

每当要求OpenGL进行舍入时,都允许实现按自己喜欢的方式进行舍入。所以,如果它想去掉小数点,那没关系

如果需要控制标准化的舍入,则直接控制它

vec4 NormalizeColor(in vec4 input)
{
  vec4 denorm = input * 255.0;
  vec4 rounded = round(denorm);
  return rounded / 255.0;
}

您可以将对
round
的调用替换为您喜欢的任何调用。

这很有意义,因为8bit最大值是255。请尝试
128.0/255.0
这是有意义的,因为8位最大值是255。尝试
128.0/255.0