作者:sysv | 来源:互联网 | 2023-01-30 09:40
在显示多个物体,而且物体之间有大量的遮挡时 ,直接 用opengl绘制时 ,opengl进行可见性判断了吗 ???
7 个解决方案
深度检测解决的是两个物体之间的遮挡关系
可见性判断大多数情况下是软件而不是硬件的功能
比如物体是否在视锥内的判断
这个判断你不做,显示卡也作,但是是在裁剪的时候做的,物体的几何和纹理等信息已经被发送到了显示卡,最后检测到物体在视锥外,无需渲染,这样不是浪费嘛
用软件做就可以在把物体传递给显示卡渲染之前进行判断,不在视锥内就抛出了,不传递给显示卡
从减少显示数据流给显示卡的角度解决这个问题是最高效的。
显示卡显示速度慢的原因主要不在显示卡渲染和处理的速度,而是在于从cpu和内存向显示卡传输的速度,这个是显示的瓶颈所在,而可见性判断是有效降低发送到显示卡的数据的“软件方法”。
有些方法是可以硬件实现,但是远没有软件时间来得实在而已
OGL(或当前的GPU)将先将每个定点坐标变换到屏幕坐标,然后对每个3角形进行裁减,如果在这时被裁减掉了就不会进行渲染,最后把所有的剩下来的三角形渲染出来,在中间可以进行深度判断来决定每个像素的可见性。
当然所有步骤都是在流水线里完成的,每个三角形之间没有任何关系(这样才可以并行),所以也就不要寄望于硬件有什么先进的裁减算法。