无论如何,你的混合函数对于简单的透明通道混合都是错误的。应该是
我正在使用:
加载PNGtheImage = [NSBitmapImageRep imageRepWithContentsOfFile:imagePath];
,我可以成功地创建一个gl纹理和渲染正确没有任何透明度。然而,当我使用:
切换混合glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
纹理使用正确的透明背景渲染,但是图像颜色不正确。
我在混合功能中尝试了几个选项,GL_SRC_ALPHA
, GL_ONE_MINUS_SRC_ALPHA
, GL_ONE
, GL_DST_ALPHA
等。
我被教导也许我需要重新排序图像数据中的位,也许通道已经混淆了,但我不希望它在混合关闭时正确渲染。
或者,我可以使用libPNG我猜,但我想尝试使用NSBitmapImageRep
,如果它是可能的。
提供截图怎么样?
无论如何,你的混合函数对于简单的透明通道混合都是错误的。应该是
- normal alpha:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
或
- 预乘alpha:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)