|
我仿照osgviewerMFC的例子搭建了一个MFC的SDI的框架,同时为了屏蔽ESC键退出的功能,我在VIEW类的OnKeyDown函数中,并没有做额外的处理,即仅仅是调用了CView::OnKeyDown(nChar, nRepCnt, nFlags);
然后,我在运行的时候发现按esc键之后,画面就不更新了,于是怀疑渲染进程被关闭了。断点之后发现,果然按ESC后首先执行OnKeyDown函数,然后就跳到了cOSG::Render这个静态函数的最后_endthread();
在论坛找了一些帖子后,经过试验,仍然有如下疑问:
(1)我在InitCameraConfig函数的做如下修改:
mViewer->setQuitEventSetsDone(false);
mViewer->realize();
但是并没有起作用,按ESC后仍然停止了渲染。
(2)但是换成
mViewer->setKeyEventSetsDone(0);
mViewer->realize();
就起到了预期的效果,我看了下帮助文档,设置为0可以屏蔽掉这个特征,可以理解。
(3)我在array的最长一帧的第九日中有如下描述:此时我们可以使用ViewerBase::setQuitEventSetsDone设置是否允许按下某个键之后直接退出这种做法。为什么第一种方式在MFC的框架中行不通呢?这两个函数功能上具体有什么区别呢?
谢谢各位~~~ |
|