iOS游戏开发使用中的粒子系统,以前一直不知道要如何使用原本的纹理而不对纹理本身的颜色做透明或者变化。今天研究了一会,虽然不知道里面的原理,但是只是能用了
就是在混合的时候使用以前两种模式
GL_SRC_ALPHA
表示把渲染的图像叠加到目标区域,也就是说源的每一个像素的alpha都等于自己的alpha,目标的每一个像素的alpha等于1。
GL_ONE_MINUS_SRC_ALPHA
目标的每一个像素的alpha等于1减去该位置源像素的alpha这里实际是在使用粒子系统时调用
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
不论叠加多少次,亮度是不变的。想明白glBlendFunc()函数的工作原理,可以看这里:
http://msdn.microsoft.com/en-us/library/ms537046
中文翻译版:
http://blog.sina.com.cn/s/blog_76871b4701017aqx.html