【问题标题】:GLSL simple colour function causes errorGLSL简单颜色函数导致错误
【发布时间】:2013-11-13 23:49:58
【问题描述】:

我已经将 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 行。

【问题讨论】:

    标签: opengl glsl shader gpu


    【解决方案1】:

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

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

    要解决此问题,请使用:

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

    【讨论】:

    • 谢谢你,我试过你的修复,同样的事情。这是错误,使用shadertoy网页。谢谢! shadertoy.com/view/MsS3Rh 在第 24 到 33 行
    • 我很抱歉我 Reeely 确实在某个阶段尝试了该解决方案,当时函数的编写方式有所不同/在页面末尾,我想我至少尝试了 2 次。非常感谢!!!
    猜你喜欢
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    相关资源
    最近更新 更多