OpenGL 深度测试

2018-07-06  本文已影响0人  CC老师_HelloCoder

什么叫深度?

所谓深度,就在坐标系中,像素Z坐标距离观察者的距离.
观察者,可以在任何位置.
OpenGL 会有专门有一块缓存区来存放Z值.深度缓冲区!

每个像素的上的Z值!!!!!

深度缓冲区作用?

一般情况下,我们绘制图形时,后面绘制的会覆盖前面的图形.一般绘制的顺序先后面再前面.
产生一个性能问题!!就是遮盖部分,先绘制的会被覆盖.这没有任何意义的绘制!

深度测试就是用来解决这个问题的!!!

它是如何处理的?
有了深度缓冲区之后,绘制的时候会检查Z,靠近观察者的覆盖.而不是靠绘制顺序来决定的.

如何使用深度缓冲区测试?

为什么要测试?一旦开启之后,就会先测试深度值在绘制

glEnable(GL_DEPTH_TEST);
默认情况下,Z值小的情况下回被覆盖.

如果观察者,在Z轴的正方向,Z值大靠近观察者
如果观察者,在Z轴的负方向,Z值小的靠近观察者

如何解决深度值相同,造成的冲突问题?

转载请备注原文出处,不得用于商业传播--CC老师

上一篇 下一篇

猜你喜欢

热点阅读