glBlendFunc()具有32位RGBA纹理

时间:2010-12-13 14:42:27

标签: opengl textures alpha-transparency

我有一个半透明的纹理,在不同的位置有不同的不透明度。我有主纹理位图和掩码位图。程序执行时,掩码位图的alpha值将加载到主纹理位图的alpha值中。我想要透明的区域的值为255 alpha,而我想要保持完全不透明的区域的值为0 alpha。中间透明度也存在中间值。

我尝试了各种glBlendFunc()设置,但它要么完全不可见,要么作用于源纹理的RGB颜色。

2 个答案:

答案 0 :(得分:4)

通常在OpenGL中,0表示透明,255表示不透明,这与您的相反。

如下所示:

glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);

应该工作。

答案 1 :(得分:0)

我有同样的问题。我正在使用SDL_Image加载我的图片。我意识到在转换图片时我使用的是SDL_DisplayFormat而不是SDL_DisplayFormatAlpha。这解决了我的问题。