【发布时间】:2015-03-20 16:15:19
【问题描述】:
我想使用 GLSL 在我的 32 位位图纹理上设置透明度。 我的片段着色器如下所示:
#version 120
uniform sampler2D myTexture;
varying vec2 TexCoord;
void main(void)
{
if(texture2D(myTexture, TexCoord).a != 1.0f)
{
discard;
}
gl_FragColor = texture2D(myTexture, TexCoord);
}
但这只会使 alpha 等于 0 的像素变得透明,并且 我想保持纹理的淡入淡出。例如在这张图片中,第一张图片是纹理,第二张是纹理蒙版,第三张是想要的结果:
纹理和纹理掩码在一个 32 位位图中。
有谁知道,如何使用 GLSL 实现这一目标?
【问题讨论】:
-
我知道,但这只是即时模式,它真的不准确,我想用着色器来做。混合还会在蒙版周围产生一些令人讨厌的透明边框。
-
混合在着色器和现代 OpenGL 中效果很好。
标签: c++ opengl textures glsl transparency