我有一个半透明的纹理,在不同的位置有不同的不透明度。我有主纹理位图和掩码位图。程序执行时,掩码位图的alpha值将加载到主纹理位图的alpha值中。我想要透明的区域的值为255 alpha,而我想要保持完全不透明的区域的值为0 alpha。中间透明度也存在中间值。
我尝试了各种glBlendFunc()设置,但它要么完全不可见,要么作用于源纹理的RGB颜色。
答案 0 :(得分:4)
通常在OpenGL中,0表示透明,255表示不透明,这与您的相反。
如下所示:
glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
应该工作。
答案 1 :(得分:0)
我有同样的问题。我正在使用SDL_Image
加载我的图片。我意识到在转换图片时我使用的是SDL_DisplayFormat
而不是SDL_DisplayFormatAlpha
。这解决了我的问题。