如果 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;
}
如果 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;
}