关于具有32位RGBA纹理的opengl:glBlendFunc()

glBlendFunc() with 32-bit RGBA textures

我的纹理是半透明的,在不同位置具有不同的不透明度。我有主纹理位图和蒙版位图。当程序执行时,来自掩码位图的alpha值将被加载到主纹理位图的alpha值中。我要透明的区域的值为255,而我要保持完全不透明的区域的值为0。中间透明度也有介于中间的值。

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


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

类似这样:

1
glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);

应该工作。


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