调试最长的一帧(第四天)

第三天的内容,调试用了我三天的业余时间,最后都不想说话了,想吐,直接上代码了事。终于明白电子书上说的, 不想赶上资本论的规模了。因为根据图形上下文创建设备,不只是窗口,还涉及到了背后的消息队列。

接着奏乐接着舞,进行第四天。

按照老规矩,先看全局。

 

介绍了几个函数,再回顾一下

取得与平台相关的视频API接口类,是个纯虚基类,父类调用子类的方式去实现。

 

 View::setUpViewAcrossAllScreens()还有一种多个从摄像机对应多个屏幕的情况,在else里

针对水平分割显示(HORIZONTAL_SPLIT),对摄像机的左右眼设置自动做了处理

 

 

在setUpViewAcrossAllScreens()还有最后一步

可以看到,osgViewer::Scene类里有成员变量场景数据,分页数据库和图像数据库

 

 

 

 

 

 

 

 

 

 

考察子节点的更新回调,事件回调,剔除和遮挡

 

渲染器的类先列出来,有个印象

上边调试错了,到了setsceneData(),应该是realize(),不过都是调用 assignSceneDataToCameras();不影响流程.

设置了图形上下文设备后,再次使用getContexts(),如果还不成功,说明图形窗口每建立起来,osg退出

 

 

下面终于和电子书的realize()连接上了,不用自己胡言乱语了。

遍历所有的图形上下文设备,进行realize()

 

 

 

,调用子类GraphicsWindowWin32的函数

i

_realizeOperation=null,直接跳过

 

把电子书上的图拷贝过来。

这个就说了个父类调用子类的事情。

osg::GraphicsContext::WindowingSystemInterface的子类有win32WindowingSystem,x11windowingsysteminterface,osgCarbonWindowingSystemInterface;等。

osg::GraphicsContext的子类有osgViewer::GraphicsWindowwin32,osgViewer::GraphicsWindowX11,osgViewer::GraphicsWindowCarbon等

当然,这些子类有的没实现 ,但是不影响以后扩展了可以调用。

上图的流程简单地说,

1,主从摄像机需要图形上下文

2,图形上下文需要父类调用子类创建。

 

另外,在windows创建图形上下文时,有个pbuffer,有效时就是离屏渲染,纹理烘焙;无效时就是普通的opengl窗口

 

 

另外,提到了_realizeOperation

这个变量通过ViewerBase::setRealizeOperation来设置,主要作用时在执行realize()时,顺便完成用户指定的一些工作。自己的工作内容,可以通过继承osg::Operation类,并重载operator()操作符来添加。

 

ok,第四天的内容就到这里吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值