深度测试是将新的深度值和深度缓冲中保存的深度值进行对比,如果通过则成为新的深度缓冲
glEnable(GL_DEPTH_TEST);//打开深度测试
在每次渲染前清除深度缓冲
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
| GL_ALWAYS | 永远通过深度测试 |
|---|---|
| GL_NEVER | 永远不通过深度测试 |
| GL_LESS | 在片段深度值小于缓冲的深度值时通过测试 |
| GL_EQUAL | 在片段深度值等于缓冲区的深度值时通过测试 |
| GL_LEQUAL | 在片段深度值小于等于缓冲区的深度值时通过测试 |
| GL_GREATER | 在片段深度值大于缓冲区的深度值时通过测试 |
| GL_NOTEQUAL | 在片段深度值不等于缓冲区的深度值时通过测试 |
| GL_GEQUAL | 在片段深度值大于等于缓冲区的深度值时通过测试 |
Fdepth=1/z−1/near1/far−1/near
防止深度冲突:
不要将物体摆得太近
将near设置远一些
使用高精度的深度缓冲