4-1深度测试

58 阅读1分钟

深度测试是将新的深度值和深度缓冲中保存的深度值进行对比,如果通过则成为新的深度缓冲

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设置远一些

使用高精度的深度缓冲