删除未使用的变量会导致着色器无法绘制任何内容

时间:2019-07-04 07:00:22

标签: opengl-es shader

我有一个简单的顶点和片段着色器,可以工作并绘制一些东西。在顶点着色器中,我设置了变量fs_uv,但是我没有在片段着色器中使用它。但是,如果我注释掉此行或将其更改为fs_uv = coord;,则着色器将停止绘制。是什么原因造成的?

顶点着色器:

#version 300 es

precision mediump  float;
precision mediump  int;
precision lowp   sampler2D;
precision lowp   sampler2DArray;

in vec4 uv;

out vec2 fs_uv;
flat out uint draw_id;

uniform mat4 matrix;


void main() {
    vec2 coord = vec2(gl_VertexID >> 1, gl_VertexID & 1);

    fs_uv = uv.xy + coord * uv.zw;

    gl_Position = matrix * vec4(vec2(100.0f) * coord, 0.0f, 1.0f);
}

片段着色器:

#version 300 es

precision mediump  float;
precision mediump  int;
precision lowp   sampler2D;
precision lowp   sampler2DArray;

in vec2 fs_uv;

out vec4 color;

void main() {
    color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
}

0 个答案:

没有答案