gpt4 book ai didi

GLSL:无法找到兼容的重载函数

转载 作者:行者123 更新时间:2023-12-01 14:59:21 24 4
gpt4 key购买 nike

我正在尝试编写一个片段着色器,但我碰壁了。这只是我的第二个着色器,所以我对此很陌生,我几乎可以肯定我只是没有正确处理数据类型,这就是错误的来源,但对于我的生活,我似乎无法要解决这个问题。目标是能够将纹理传递给函数,以便我可以一次又一次地调用它......任何和所有帮助都将不胜感激!

我得到的错误是:错误 C1115:无法找到兼容的重载函数“texture2D(vec3, vec2)”。

uniform sampler2D image;
uniform float radius;
uniform float adsk_result_w, adsk_result_h;

vec2 iResolution = vec2(adsk_result_w, adsk_result_h);
vec2 uv=(gl_FragCoord.xy/iResolution.xy);
vec2 vTexCoord = (gl_FragCoord.xy/iResolution.xy);
float blurSize = radius/iResolution;

vec4 hblur(vec4 frontin ) {
vec3 RTScene = frontin.rgb;
vec4 sum = vec4(0.0);
sum += texture2D(RTScene, vec2(vTexCoord.x - 4.0*blurSize, vTexCoord.y)) * 0.05;
sum += texture2D(RTScene, vec2(vTexCoord.x - 3.0*blurSize, vTexCoord.y)) * 0.09;
sum += texture2D(RTScene, vec2(vTexCoord.x - 2.0*blurSize, vTexCoord.y)) * 0.12;
sum += texture2D(RTScene, vec2(vTexCoord.x - blurSize, vTexCoord.y)) * 0.15;
sum += texture2D(RTScene, vec2(vTexCoord.x, vTexCoord.y)) * 0.16;
sum += texture2D(RTScene, vec2(vTexCoord.x + blurSize, vTexCoord.y)) * 0.15;
sum += texture2D(RTScene, vec2(vTexCoord.x + 2.0*blurSize, vTexCoord.y)) * 0.12;
sum += texture2D(RTScene, vec2(vTexCoord.x + 3.0*blurSize, vTexCoord.y)) * 0.09;
sum += texture2D(RTScene, vec2(vTexCoord.x + 4.0*blurSize, vTexCoord.y)) * 0.05;
return vec4(sum);
}

void main() {
vec4 front = texture2D(image, uv);
vec4 work = hblur(front);

gl_FragColor = vec4(work);
}

最佳答案

由于错误消息告诉您没有 texture2D预期 vec3 的过载作为第一个和一个 vec2作为第二个论点。 texture2D的第一个参数必须是类型 sampler2D .

从字面上看,您在代码中使用 texture2D(RTScene, vec2(vTexCoord.x, vTexCoord.y)) 告诉 OpenGL寻找位置 vec2(vTexCoord.x, vTexCoord.y) 处的颜色在纹理RTScene .但作为 RTScene只是一个 vec3包含三个浮点数(您在 main 中检索到的 rgb 值),OpenGL 应该在哪里找到像素。

在你的主代码中,你会有这样的东西:

vec4 work = hblur(image, uv);

还有您的 hblur应该是这样的:
vec4 hblur(sampler2D tex, vec2 uv) {
// your other code
sum += texture2D(tex, vec2(uv.x - 4.0*blurSize, uv.y)) * 0.05;
// your other code
}

查看您正在编码的 OpenGL 版本的 OpenGL 快速引用卡总是有帮助的,您将在那里快速了解可用功能:
  • OpenGL 3.2 API Reference Card
  • OpenGL 4.1 API Reference Card
  • OpenGL 4.2 API Reference Card
  • 关于GLSL:无法找到兼容的重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22557408/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com