请问3d怎么解决z-fighting的问题?

前提:功能限制,2个面一定会重合,请教大家如何解决共面时闪烁问题

1赞

自己顶一下

默认是 GL_LESS 的,
改成这个 glDepthFunc(GL_LEQUAL) 试试

不行哦,还有别的方法嘛

z-fighting一般出现在贴图,比如把一个贴纸、喷涂盖在另一个表面上之类的逻辑,

基本上就是以下几种方法:

  • render to texture,把贴好图的纹理拿来用,缺点是对于复杂模型不太好做
  • 在fragment shader上做手脚,比较麻烦,缺点是可能要动架构
  • 用 stencil check,把原纹理被贴住的部分裁掉,缺点是不能处理半透明的贴图
  • 让贴图离开原背景一小段距离,缺点是镜头切到很近的地方能看出来分层

至于在cocos里怎么实现,我也没坐过,我是云玩家

Unity Shader - Offset 的测试,解决简单的z-fighting情况
我看到unity中有方法,但在cocos中没有找到怎么使用的