2014年11月5日水曜日

NSImageでテクスチャ読み込みする場合のPNG Premultiplied AlphaとOpenGLのブレンディング

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 件のコメント: