【问题标题】:Is there anything wrong in this shader code?这个着色器代码有什么问题吗?
【发布时间】:2018-05-10 08:26:10
【问题描述】:

rippleShader.frag 文件代码:

// attibutes from vertShader.vert
varying vec4 vColor;
varying vec2 vTexCoord;

// uniforms
uniform sampler2D uTexture;
uniform float uTime;

void main() {
    float coef = sin(gl_FragCoord.y * 0.1 + 1 * uTime);
    vTexCoord.y += coef * 0.03;
    gl_FragColor = vColor * texture2D(uTexture, vTexCoord);
}

vertShader.vert 文件代码:

#version 110

//varying "out" variables to be used in the fragment shader
varying vec4 vColor;
varying vec2 vTexCoord;

void main() {
    vColor = gl_Color;
    vTexCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

请接受我的歉意,我现在无法发布图片。但是当我运行程序时,错误提示如下:

【问题讨论】:

  • 将错误消息作为文本发布

标签: opengl glsl shader sfml


【解决方案1】:

错误消息的意思是,您不能为变量vTexCoord 分配任何值,因为它是片段着色器的输入。

以某种方式更改您的代码:

void main() {
    float coef   = sin(gl_FragCoord.y * 0.1 + 1.0 * uTime);
    vec2 texC    = vec2(vTexCoord.x, vTexCoord.y + coef * 0.03);
    gl_FragColor = vColor * texture2D(uTexture, texC);
}

注意,您会收到警告消息,因为您使用的是整数常量值 (1),而不是浮点值 (1.0)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多