我已将完全从工作代码中复制的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行。
答案 0 :(得分:1)
实际错误是 没有 在您的问题文本中包含的代码的一部分:
void main(void)
{
vec3 HSV = hsv2rgb(.1,.2,.3);
~~~~~~~~ BAD!
...
要解决此问题,请使用:
vec3 HSV = hsv2rgb (vec3 (.1, .2, .3));