OpenGL中颜色、alpha及混合的理解

      如果启用了混合,alpha值常常用于把被处理片断的颜色值与已经存储在帧缓冲区中的像素的颜色值进行混合。alpha值可以用于alpha测试,根据片断的alpha值决定接受或拒绝它(混合出现在场景进行光栅化并转换为片断之后,但在最终的像素被绘制到帧缓冲区之前)。

 

      如果不使用混合,每个新片断将改写帧缓冲区中已经存在的颜色值,就像该片断是不透明的那样。如果使用了混合,可以控制原来的颜色值如何与新片断的颜色值进行混合。因此,可以使用alpha混合来创建半透明的片断,仍然保留一些原告存储的颜色值。alpha混合是诸如透明化、数字合成、油漆这类技巧的核心。

     

      对于混合操作,最自然的思考方式是把片断的RGB成分看成是它的颜色,把alpha成分看成是它的透明度。透明和半透明表面的不透明性要低于不透明表面,也就是它们的alpha值要低于不透明表面的alpha值。例如,如果透过绿色玻璃观察一个物体,所看到的颜色部分来自玻璃地绿色,部分来自物体的颜色。这两种颜色所占的比例取决于玻璃的传播属性:如果玻璃传播撞击它的光线的80%(即不透明度为20%),所看到的颜色是玻璃颜色的20%加上玻璃后面那个物体的颜色的80%的组合。

你可能感兴趣的:(OpenGL程序开发)