NSImageでPNGを読み込む場合、内部でNSBitmapImageRepを利用して読み込むため、透過部分はpremultiplied alpha処理が強制的に行われる(回避不可)。このため、OpenGLのブレンディングを行う場合、
×:glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
○:glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
とすると正しくブレンドできる。
参考:
http://idevapps.com/forum/showthread.php?tid=1784&page=2
https://developer.apple.com/library/mac/Documentation/Cocoa/Reference/ApplicationKit/Classes/NSBitmapImageRep_Class/index.html
0 件のコメント:
コメントを投稿