次を使用して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 を使用することもできますが、NSBitmapImageRep
可能であれば使用してみたいと思います。