Pil*_*pel 5 opengl graphics occlusion-culling
我正在阅读Real-Time Rendering 3rd Edition中的Occlusion Culling部分,我无法理解它是如何工作的.一些问题:
八叉树结构是否与用于一般视锥体剔除和渲染的八叉树相同?或者它是专门用于遮挡剔除技术的专业八叉树?
一个更一般的问题:在前一部分(以及此处)中,遮挡查询术语被描述为"渲染对象的简化边界体积并将其深度结果与Z缓冲区进行比较,返回像素数量可见." OpenGL中的哪些功能与此Occlusion Query概念相关联?
这种技术是开放世界游戏遮挡剔除的标准吗?
当附近的大物体可能遮挡大量较远的小物体时,分层 Z 缓冲区非常有用。一个例子是渲染建筑物的内部或山地景观。
当渲染附近的对象时,它会将 Z 缓冲区金字塔的较低分辨率级别上的某个像素设置为接近深度值。当渲染更小的对象时,可以首先根据该像素检查其边界框并整体剔除。
是的。这是相同的八叉树。但它不一定是八叉树。任何分层空间索引数据结构都适用于分层 Z 缓冲区或视锥体剔除。
为了从分层 Z 缓冲区中受益,我们需要从最近的对象开始渲染风景。可以使用八叉树或 BSP 等技术。
此外,手头有一个八叉树可以让我们根据到 bbox 的距离来剔除整个树枝,而不是单独的对象或三角形。
OpenGL 中负责遮挡查询的部分是:glBeginQuery
、glEndQuery
和glGetQueryObject
。有关详细信息,请参阅查询对象。
分层 Z 缓冲区是在一些早期 Radeon 的硬件中实现的。不过我没听说现在有人使用它。
另一方面,通常使用遮挡查询。从本质上讲,它们提供了类似的好处。