Я пытался нарисовать две текстуры надписей и фона, но только альфа-часть надписей становится белой.
Я просто попробовал следующее.
- Нарисуйте 2 текстуры (фон и отличительные знаки)
- Добавить glBlendFunc для применения альфа-значения декалей
#version 330 core
in vec2 UV;
out vec3 color;
uniform sampler2D background;
in vec3 decalCoord;
uniform sampler2D decal;
void main(){
vec3 BGTex = texture( background, UV ).rgb;
vec3 DecalTex = texture(decal, decalCoord.xy).rgba;
color =
vec4(BGTex,1.0) + // Background texture is DDS DXT1 (I wonder if DXT1 is the cause?)
vec4(DecalTex,0.0); // Decal texture is DDS DXT3 for alpha
}
// Set below...
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD);
Мне удалось нормально рисовать, но есть следующие проблемы.
-Альфа часть надписей не может быть прозрачной.
Это проблема, которую можно решить с помощью фрагментированного шейдера?
В таком случае, как мне переписать код?
Текстура DDS, одна из которых имеет тип DXT1 (Фон. Поскольку этой текстуре не требуется альфа), а другая - тип DXT3 (Decal). Это тоже причина? (Оба должны быть типа DXT3?)
Кроме того, я должен искать другой способ надеть наклейки?