gl.enable(gl.DEPTH_TEST) //开启深度测试
gl.DepthMask(false) //深度写入为fasle 不参与深度测试
gl.enable(gl.BLEND); //融合
gl.blendFunc( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA ); //不进行深度融合
depthBuffer.setMask( material.depthWrite );
setMask: function ( depthMask ) {
if ( currentDepthMask !== depthMask && ! locked ) {
gl.depthMask( depthMask );
currentDepthMask = depthMask;
}
},
- 渲染半透明物体时,需要开启深度测试而关闭深度写入功能。是因为不写入深度的话,后面进来的模型就不用考虑半透明的深度测试了
- 深度测试为false, 意味着drawcall的物体会不断的覆盖在上面