GLSL简单的颜色功能会导致错误

时间:2013-11-03 03:08:41

标签: opengl glsl shader gpu

我已将完全从工作代码中复制的HSV2RGB颜色函数复制到shadertoy网站上的另一个代码中,它说 -

  no matching overloaded function found, 
  cannot convert from "constant mediump float" to "3 vector component of float"

这是拒绝工作的功能:

 vec3 hsv2rgb(vec3 c)//<---crashes
 {
  vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
  vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
  return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
 }

这是一个示例glsl沙箱,错误为https://www.shadertoy.com/view/MsS3Rh,它位于第24到33行。

1 个答案:

答案 0 :(得分:1)

实际错误是 没有 在您的问题文本中包含的代码的一部分:

void main(void)
{
    vec3 HSV = hsv2rgb(.1,.2,.3);
                       ~~~~~~~~ BAD!
    ...

要解决此问题,请使用:

vec3 HSV = hsv2rgb (vec3 (.1, .2, .3));