探索未知种族之osg类生物---渲染遍历之裁剪一

本文深入探讨osg::Util::SceneView::cull()函数,解析其在场景筛选、渲染信息初始化、遮挡节点检测、立体渲染处理等方面的作用,帮助理解osg渲染过程的优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上面我们用了四节课的内容,讲解了一些osg概念性的内部原理。希望大家可以再看今天的讲解之前先再仔细的研究一下前四节的内容。这样你就会对整个osg的渲染过程有一个更加清晰的认知,有助于理解下面两个函数cull()和draw()。

osg::Util::SceneView::cull()

cull

好,相信大家已经又复习了上面几节的内容,那我们就进行sceneView的第一个重要功能osg::Util::SceneView::cull()函数。场景的筛选函数 cull 主要完成了以下几个工作。

1、通过_camera->getNodeMask()==0来判断主相机下的根节点是否可见,如果不可见则不用进行cull操作。

2、进行视图的渲染信息(_renderInfo)的初始化

3、通过updateUniforms();更新一些osg内设的 osg::Uniform 着色器变量(osg_FrameNumber,osg_FrameTime等)。因为opengl中Uniform表示这个变量可以被所有的shader访问到,所以我们在编写 GLSL 程序时调用这些变量获取 OSG 提供的一些场景和时间方面的信息。

4、对筛选访问器(_cullVisitor),状态树根节点(_stateGraph)和渲染树根节点(_renderStage)进行初始化操作。

5、通过_displaySettings->getStereo()来判断是否进行立体渲染(例如VR等),那么此时 OSG 会针对左/右眼(osg::DisplaySettings::LEFT_EYE/RIGHT_EYE)以其它各种设置做出适当的处理,相关的函数包括 SceneView

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值