引子
在 JavaScript WebGL 三维相关概念中尝试一些效果的时候,又碰到了新问题,就去查了资料,自己尝试后总结下。
绘制顺序
之前二维绘制顺序并没有产生明显的不好效果,现在绘制三维影响就比较大了。
先看看二维相同一套顶点不同顺序的效果:
两个面的形状和对应颜色始终保持一致,就是缓冲的顺序变了,发现 WebGL 默认情况下会按照缓冲区中顺序绘制,也就是后绘制的图形会覆盖先绘制的图形。这个就像一层一层贴纸一样,比较符合一般认知,所以在二维绘制时并没发现明显不对劲的地方。
关于三维绘制顺序先思考一下:三维的顶点坐标有三个分量,第三个分量是在 z 轴上表示深度信息,默认垂直屏幕向内为负方向,那么 z 值越大表示离屏幕越近,既然都有区分的依据,直接按照这个顺序绘制应该就可以了。实际试试:

本文探讨JavaScript WebGL中绘制顺序的重要性,特别是在三维场景中。默认情况下,WebGL按照缓冲区顺序绘制,后绘制的图形会覆盖前面的。然而,三维绘制仅依赖z轴深度信息并不足够,需要开启DEPTH_TEST和正确投影来避免错误效果。同时,文章介绍了深度冲突(Z-fighting)现象及其解决方案,包括多边形偏移(polygon offset)的使用,以解决多次绘制时的显示异常问题。
最低0.47元/天 解锁文章
1591

被折叠的 条评论
为什么被折叠?



