遮挡剔除(Occlusion Culling)与视锥体剔除(Frustum Culling)是否可以同时起作用?()

可以的

Occlusion Culling is a feature that disables rendering of objects when they are not currently seen by the camera because they are obscured by other objects. This does not happen automatically in 3D computer graphics since most of the time objects farthest away from the camera are drawn first and closer objects are drawn over the top of them (this is called "overdraw"). Occlusion Culling is different from Frustum Culling. Frustum Culling only disables the renderers for objects that are outside the camera's viewing area but does not disable anything hidden from view by overdraw. Note that when you use Occlusion Culling you will still benefit from Frustum Culling.

遮挡剔除, 当一个物体被其他物体遮挡住而不在摄像机的可视范围内时不对其进行渲染。.遮挡剔除在3D图形计算中并不是自动进行的。因为在绝大多数情况下离 camera 最远的物体首先被渲染,靠近摄像机的物体后渲染并覆盖先前渲染的物体(这被称为重复渲染"overdraw"). 遮挡剔除不同于视锥体剔除. 视锥体剔除只是不渲染摄像机视角范围外的物体而对于被其他物体遮挡但依然在视角范围内的物体,则不会被剔除. 注意当你使用遮挡剔除时你依然受益于视锥体剔除(Frustum Culling).

原文链接:http://blog.csdn.net/pizi0475/article/details/12883401
Occlusion Culling(遮挡剔除)是一种在渲染过程中剔除遮挡物体的技术,以提高渲染效率。osg中的Occlusion Culling技术实现主要有两种方法:基于场景图的遮挡剔除和基于硬件的遮挡剔除。 1. 基于场景图的遮挡剔除 osg中的场景图(Scene Graph)是一种以节点(Node)和组件(Drawable)为基本单元的数据结构,可以描述一个三维场景的所有物体和其之间的关系。基于场景图的遮挡剔除技术,主要是通过对场景图进行遍历,计算每个节点是否被其他节点遮挡,以决定是否剔除该节点及其子节点的渲染。 具体实现中,可以使用视锥体(View Frustum)和光线追踪(Ray Tracing)等技术,对场景图中的节点进行可见性测试,以确定其是否遮挡。同时,还可以使用空间分割技术(如八叉树)对场景进行划分,以加快遍历速度。 2. 基于硬件的遮挡剔除 osg中的基于硬件的遮挡剔除技术,主要是通过OpenGL的可编程着色器(Shader)实现。具体实现中,可以使用OpenGL的Geometry Shader来提取出场景中需要进行遮挡剔除的物体的深度值和法向量信息,然后使用OpenGL的Transform Feedback技术将这些信息传递给CPU端进行处理。 同时,还可以使用OpenGL的Occlusion Query技术,对场景中每个物体的可见性进行测试,以确定其是否需要进行渲染。具体实现中,可以使用glBeginQuery和glEndQuery等函数进行测试,并通过glGetQueryObjectiv函数获取测试结果。 总的来说,osg中的Occlusion Culling技术实现是一个较为复杂的过程,需要结合多种技术和算法进行优化,以实现高效的遮挡剔除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值