osg自学笔记2——《最长的一帧》第1、2日

最长的一帧 作者:王锐(array)
参考的osg源码版本为 3.6.3

0 概况

这里只研究一帧的渲染。

while (!viewer.done()) 
 viewer.frame();

第一日

具体内容

osgViewer::ViewerBase::frame()函数

void ViewerBase::frame(double simulationTime)
{
    if (_done) return;

    // OSG_NOTICE<<std::endl<<"CompositeViewer::frame()"
   //        <<std::endl<<std::endl;

    if (_firstFrame)//判断第一帧,初始化
	{
        viewerInit();//初始化

        if (!isRealized())
        {
            realize();
        }

        _firstFrame = false;
    }
    advance(simulationTime);

    eventTraversal();//事件遍历 鼠标键盘窗口
    //遍历更新回调,负责更新 DatabasePager 与 ImagePager 分页数据处理组件。
	updateTraversal();
	//遍历渲染,线程处理方法,完成场景的筛选(cull)和绘制(draw)工作。
	renderingTraversals();
}

osgViewer::View::init()函数

//完成视景器的初始化工作
void View::init()
{
    OSG_INFO<<"View::init()"<<std::endl;

	//_eventQueue 用于储存该视景器的事件队列。保存一个 GUIEventAdapter 的链表.
	//createEvent 函数的作用是分配和返回一个新的 GUIEventAdapter事件的指针。
	//osgGA::GUIEventAdapter,用于表达各种类型的鼠标、键盘、触压笔和窗口事件。
	//initEvent 新事件的类型被指定为 FRAME 事件,即每
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值