如果在画面中,发现有画面闪烁的问题。那么大多数情况下是z-fighting引起的,
解决方案:
解决方案:
1, 在每个场景中,找到那个MainCamera,然后在Inspector上,找到MainCamera的属性,Clipping Planes,需要做的是尽量放大near的值,尽量减小far的值。根据我的实验结果,同样改动Near值的幅度比Far值的幅度相对来说效果会更好。如Near从1到20可能修正了某个z-fighting,但是Far从1000改到500也还是没有用。这个在实践中可以注意。
2, 如果场景没有办法改动上述的值,那么还有的方式就是找到产生z-fighting的模型,让模型产生这个现象的两个面尽量离开一些距离,究竟多少距离只有通过实验才知道。
3, 如果可能,程序上就可以用Polygon Offset,这个是OpenGL的接口,
drawOnePlane();
//Draw other plane in the almost same position, before use offset, it will fighting with the one we has drawn.
glEnable( GL_POLYGON_OFFSET_FILL );
glPolygonOffset( g_OffsetFactor, g_OffsetUnit );
drawOtherPlane();
glPolygonOffset( 0.0f, 0.0f );
glDisable( GL_POLYGON_OFFSET_FILL );
4、