我正在使用以下方法加载 PNG:
theImage = [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,但如果可能的话,我想尝试使用 a NSBitmapImageRep
。