02总结--008--OpenGL 正背面消除和深度测试

2020-07-13  本文已影响0人  修_远

[TOC]

TOC

正背面消除:Face Culling

怎么判断正背面

【默认】通过顶点数据的顺序

观察者角度+顶点连接顺序

image

从右侧观看

从左侧观看

【总结】

怎么消除正背面

先来看一组API

剔除背面前 剔除背面后

消除正背面为什么还有问题

image

继续旋转,上面的两个地方肯定会重合,而且他们都是正面,那这个时候,怎么渲染呢?你不知道,计算机也不知道,所以出现了下面的现象

image

继续向下研究,深度测试将会告诉你答案。

深度测试

什么是深度测试

什么是深度缓存区(DepthBuffer)

怎么使用深度测试

这个在代码侧就异常简单了

深度测试为了解决什么问题

深度测试潜在风险:Z-fighting

Z-fighting

Z-fighting 解决方案

让深度值之间产生间隔。

如何避免 Z-fighting

【补充】填充方式

【补充】正背面规则修改和指定判断模式

下面这两个问题只是对深度测试使用方式的一个了解,在实际开发中一定不要去修改的地方,如果有人修改了,你要知道是什么样的结果。

  1. 修改正/背面规则(默认逆时针为正面,手动改为顺时针为背面)
//用户指定绕序那个为正⾯
void glFrontFace(GLenum mode); 
mode参数为: GL_CW,GL_CCW,默认值:GL_CCW
  1. 修改深度测试判断模式:void glDepthFunc(GLEnum mode)
image
上一篇 下一篇

猜你喜欢

热点阅读