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

How to load a default colour if the sampler2D was empty

如果 sampler2D 没有加载图像,我想加载默认颜色 vertColor,为此我尝试了以下方法:

片段着色器:

#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

但是没有用,我该怎么做?

How to load a default colour if the sampler2D was empty?

你为什么要这么做?我建议确保采样器永远不会“空”。

如果您想使用采样器以统一的颜色绘制,请创建一个具有单个像素的 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;
}