如果sampler2D为空,如何加载默认颜色

3

如果没有加载图像,我想要加载一个默认颜色vertColorsampler2D中,为了实现这个目标,我尝试了以下方法:

片元着色器:

#version 410

uniform sampler2D tex0;
in vec4 vertColor;
in vec2 TexCoords;

out vec4 fragColor;

void main( void )
{
     vec4 texColor = texture(tex0, TexCoords);
     if(tex0 == -1)  fragColor = blinnPhongModel(vertColor);
     else{
     texColor.a = 1.0;
     fragColor = texColor;
     }//end of else

} // End of main

但它没有起作用,我该怎么办?

1个回答

1
如何在sampler2D为空时加载默认颜色?
为什么要这样做?我建议确保sampler永远不会“空”。
如果您想使用sampler绘制统一的颜色,请创建一个具有单个像素的1x1纹理。通过这个技巧,您不需要在着色器中进行分支。
您所要做的就是创建一个1x1的纹理。这个纹理有1个像素和1种颜色。 片段着色器只需进行纹理查找,根本没有分支:
#version 410

uniform sampler2D tex0;
in vec2 TexCoords;
out vec4 fragColor;

void main( void )
{
     vec4 texColor = texture(tex0, TexCoords);
     fragColor = texColor;
}

因为我对GLSL很新,不知道该怎么做,你能否详细解释一下你的建议? - Bilal
@Bilal 抱歉,但没有什么需要解释的。你所要做的就是绑定一个1x1的纹理。 - Rabbid76

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接