关于Opengl中的混合问题 混合功能,可以实现半透明效果。 Alpha值可以理解为不透明度。它用于将被处理片断的颜色值与已经储存在帧缓冲区中的像素颜色值进行组合。 如果不启动混合功能(glDisable(GL_BLEND)),即默认情况下,新片断值会直接取代像素缓冲区中的片断值。 如果启动混合功能(glEnable(GL_BLEND)),设被处理片断的颜色值(Sr,Sg,Sb,Sa),在帧缓冲区中的像素颜色值(Dr,Dg,Db,Da),那么通过定义混合方式(GLBlendFunc(Sf,Df))来指定最终帧缓冲区中的颜色值(Xr,Xg,Xb,Xa)。 Xr = Sr * Sf + Dr * Df, Xg = Sg * Sf + Dg * Df, Xb = Sb * Sf + Db * Df, Xa = Sa * Sf + Da * Df。 通常,在设置混合方式时,我们会将(Sf,Df)的值与像素的Alpha值相关联。 在DVR中,对于数据制成的纹理, 按由前往后的顺序进行混合,混合方式应该设置为GLBlendFunc(GL_DST_ALPHA, GL_ONE),即X = S*(1-Da)+ D; 按由后往前的顺序进行混合,混合方式应该设置为GLBlendFunc(GL_ONE, GL_SRC_ALPHA),即X = S + D *(1-Sa);