使用一个GLSL程序进行纹理和无纹理渲染?

时间:2015-12-26 21:12:43

标签: c++ opengl glsl shader

而不是在我的OpenGL代码中有两个单独的着色器(一个用于绑定纹理时,一个用于没有绑定时)我通常会选择一个处理两者的着色器程序。这是我通常的片段着色器:

#version 330

uniform bool textured;
uniform sampler2D sampler;

in vec4 fColor;
in vec2 tCoord;

out vec4 final_color;

void main()
{
    vec4 texel = vec4(1.0, 1.0, 1.0, 1.0);
    if (textured)
        texel = texture(sampler, tCoord);
    final_color = fColor * texel;
}

在一个现代的OpenGL配置文件中,这个编译但没有输出除黑色像素之外的任何东西(或者在LWJGL遗留配置文件中,如果纹理==假则输出常规颜色,如果纹理==真,则输出纹理)。我不明白这个不会工作的原因,但是什么方法可以用于纹理和无纹理的片段?

0 个答案:

没有答案