我正在设计一个精灵类,如果没有加载纹理,我想仅显示一种颜色。
这是我的顶点着色器:
#version 330 core
layout (location = 0) in vec4 vertex; // <vec2 pos, vec2 tex>
out vec2 vs_tex_coords;
uniform mat4 model;
uniform mat4 projection;
void main()
{
vs_tex_coords = vertex.zw;
gl_Position = projection * model * vec4(vertex.xy, 0.0, 1.0);
}
而片段着色器:
#version 330 core
in vec2 vs_tex_coords;
out vec4 fs_color;
uniform sampler2D image;
uniform vec3 sprite_color;
void main()
{
fs_color = vec4(sprite_color, 1.0) * texture(image, vs_tex_coords);
}
我的问题是,如果我不绑定纹理,它只显示一个黑色精灵。 我认为问题在于我的片段着色器中的纹理函数返回0,并且破坏了所有公式。
是否有一种方法可以知道sampler2D未初始化或为空,并只返回sprite_color?