cocos2d-x混合模式问题

我在void CCSprite::draw(void)中强制修改混合模式为
m_sBlendFunc.src = GL_SRC_ALPHA;
m_sBlendFunc.dst = GL_ONE_MINUS_SRC_ALPHA;
发现最后输入的结果有点奇怪。以红和(1,1,1,0.5)混合为例子,结果应该是:
(2550.5 + 2550.5, 00.5 + 2550.5, 00.5 + 2550.5) = (255, 127, 127)
而cocos2d-x输出是(191,64,64)

到底怎么回事呢?


cocos2dx-blend.jpg (10.0 KB)


blend-opengl.jpg (4.4 KB)

please check the meaning of “GL_ONE_MINUS_SRC_ALPHA”

找到原因了,是因为带alpha的png 做了预乘alpha的操作。