我有一个libgdx游戏,我想在大纲中使用位图字体。我希望能够使用setColor()设置字体颜色,但是,我总是希望轮廓保持白色。什么是我实现这个目标的最好方式?我假设我应该使用片段着色器进行所需的颜色处理。带有白色轮廓的OpenGL彩色位图字体
我已经创建了如下的位图字体,红色表示笔画,绿色表示设置的颜色。
我有点坚持了什么,我需要然而,在片段着色器做的。我对着色器的经验和理解是有限的。我当前的着色器看起来像这样,它基于r正确绘制笔画。我不确定我应该如何在设置的颜色(v_color)中添加正确的颜色中间字体。红色:#FF0000和绿色:
varying vec4 v_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
void main()
{
vec4 textureColour = texture2D(u_texture, v_texCoords);
vec4 colour = vec4(textureColour.r,
textureColour.r,
textureColour.r,
textureColour.a);
gl_FragColor = vec4(colour.r, colour.g, colour.b, colour.a);
}
这似乎并不奏效。它在100%透明的领域进行绘制。如果我在最后添加gl_FragColor.a = texVal.a,它会起作用。我不知道这是否可以更优雅地融合,因为我对着色器中矢量运算的理解是有限的。 –
啊,好的,你的问题没有说明你在使用混合。让我看看我可以如何纳入这一点。 –
嗯,我认为如果字母外部的纹理部分是黑色的,那么它就会工作。但它听起来像是alpha = 0的非黑色。 –