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

先看看总体进展,

eventTraversal函数的任务:在每帧仿真过程中,取出已经发生的所有事件,摒弃哪些对场景不会有助益的(比如, 在视口外的鼠标事件),依次交付给各个事件处理器,最后清空现有的事件队列,等待下一帧的到来。

 

在View的几个成员变量中,

_eventHandler处理由图形设备传递到事件队列_eventQueue的各种事件。

 

添加事件处理器由View::addEventHandler添加,

事件处理器可以通过继承事件处理器基类osgGA::GUIEventHandler,重写handle()函数,实现自定义的交互事件相应流程。

 

调试进去看看

 

 

 

 

 

 

窗口坐标 = 世界坐标*摄像机坐标系*投影坐标系*窗口坐标系;

 

分开来,就是

摄像机坐标 = 世界坐标* 摄像机坐标系;

投影坐标 = 摄像机坐标 * 投影坐标系

窗口坐标 = 投影坐标 *窗口坐标系.

 

 

osg的事件队列是由一个GUIEventAdapter事件组成的链表,比如鼠标移动,按键按下,窗口尺寸等动作,都会作为一个新的GUIEventAdapter对象插入到链表中,(

比如,mouseMotion,keypress和windowResize,并间接地调用EventQueue::addEvent函数,而这些事件之间可能共通的参数和状态就从“状态事件”中读取,比如鼠标移动时,鼠标坐标XY就是状态事件,可以在不同的事件中更新坐标,然后传递。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值