深度绘制和混合同时存在的场景绘制顺序:
1、打开 深度蒙版glDepthMask( GL_TRUE )
2、以任何顺序绘制所有不透明的对象
3、关闭深度遮罩glDepthMask( GL_FALSE )
4、打开BLEND_MODE
5、绘制从最远到最近排序的半透明对象
void Draw {
/**开启深度测试*/
glEnable( GL_DEPTH_TEST );
/**开启深度遮罩*/
glDepthMask( GL_TRUE );
/**绘制不透明对象*/
DrawA();
DrawB();
/**关闭深度遮罩*/
glDepthMask( GL_FALSE );
/**开启混合*/
glEnable( GL_BLEND );
/**混合方程*/
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
/**绘制从最远到最近排序的半透明对象*/
DrawC();
DrawD();
/**关闭混合*/
glDisable( GL_BLEND );
}
网友评论