ccc
frame 函数的内容本身几乎一眼就可以看完。不过要注意的是,这个函数是 ViewerBase
类的成员函数,而非 Viewer 类。因此,无论对于单视景器的 Viewer 类,还是多视景器的
CompositeViewer 类,frame 函数的内容都是相同的(因为它们都没有再重写这个函数的内容)。
该函数所执行的主要工作如下:
1、如果这是仿真系统启动后的第一帧,则执行 viewerInit();此时如果还没有执行 realize()
函数,则执行它。
2、执行 advance 函数。
3、执行 eventTraversal 函数,顾名思义,这个函数将负责处理系统产生的各种事件,诸
如鼠标的移动,点击,键盘的响应,窗口的关闭等等,以及摄像机与场景图形的事件回调
(EventCallback)。
4、执行 updateTraversal 函数,这个函数负责遍历所有的更新回调(UpdateCallback);
除此之外,它的另一个重要任务就是负责更新 DatabasePager 与 ImagePager 这两个重要的分
页数据处理组件。
5、执行 renderingTraversals 函数,这里将使用较为复杂的线程处理方法,完成场景的筛
选(cull)和绘制(draw)工作。