查看: 2155|回复: 14

OSG与MFC多文档问题

[复制链接]

该用户从未签到

发表于 2010-12-26 21:51:22 | 显示全部楼层 |阅读模式
我改造了一下osgviewerMFC的程序,可以打开新建文档,但是第一次打开的时候直接出现蓝色背景,我再新建文档的时候会先出现白色背景再变成蓝色背景,就是新建多个文档的时候会有闪烁的感觉,有什么办法可以解决吗?还有一个问题是osg的蓝色背景怎样改成其它的颜色?谢谢

该用户从未签到

发表于 2010-12-27 08:45:51 | 显示全部楼层
您没有给出自己的实现方法,那么我无法判断什么。此外改变背景可以用camera->setClearColor()

该用户从未签到

 楼主| 发表于 2010-12-27 18:27:50 | 显示全部楼层
我在CMFC_OSG_MDIDoc里添加了OnNewDocument()函数,MFC_OSG.cpp里的InitSceneGraph函数里做了如下改动

  1. mRoot  = new osg::Group;

  2.     // Load the Model from the model name
  3.         if (!m_ModelName.empty())
  4.         {
  5.                 mModel = osgDB::readNodeFile(m_ModelName);

  6.                 // Optimize the model
  7.                 osgUtil::Optimizer optimizer;
  8.                 optimizer.optimize(mModel.get());
  9.                 optimizer.reset();

  10.                 // Add the model to the scene
  11.                 mRoot->addChild(mModel.get());
复制代码

运行时新建两个文档之间会有闪烁的感觉,就是先是白色在是蓝色,改成白色以后还是有闪烁的感觉

该用户从未签到

发表于 2010-12-28 08:21:06 | 显示全部楼层
我依然无法判断您做了什么,您给出的代码与您遇到的现象恐怕没什么关联

该用户从未签到

 楼主| 发表于 2011-5-4 16:10:08 | 显示全部楼层
以前这个问题没解决,现在又提出来,在运行MFC示例程序时,打开一个文件后显示蓝色背景,再打开一个文件的时候,背景颜色会突然出现白色,然后才会变成蓝色,当然这个时间比较短,有没有什么号的办法解决呢?另外如果我设置子窗口不是最大化的时候,就不会出现这种情况

该用户从未签到

发表于 2011-5-5 08:31:14 | 显示全部楼层
我没有见过这种情况,如果您真的想解决问题,请给出足够的信息和源代码或者直接上传一个可以说明问题的工程

该用户从未签到

 楼主| 发表于 2011-5-5 10:17:26 | 显示全部楼层
array大侠,你可以打开osg自带的例子程序MFC_OSG_MDI,打开cow.osg文件后,再打开glider.osg,你可以试一下,打开第二个文件的时候会出现白色,如果第二个文件是ceep.ive,那时间会更长的,难道没其他人遇到过吗?因为我要做三维窗口和二维窗口之间的转换,所以会出现这个问题

该用户从未签到

发表于 2011-5-6 08:39:04 | 显示全部楼层
很可惜,我没有看到这个问题,在我这里一切正常

该用户从未签到

发表于 2011-5-6 13:07:52 | 显示全部楼层
OSG与MFC的多文档的例子,我觉得写的不太好。
    建议你用FreeSouth的框架,或者自己写一个单文档的框架,尤其是里面切换模型,即打开新的模型,实际上用节点更新回调来处理是比较好的,只是需要重新计算包围盒等。
   至于“三维窗口和二维窗口”切换,我觉得可以用别的方法。

该用户从未签到

 楼主| 发表于 2011-5-6 13:52:15 | 显示全部楼层
最近刚下载过一个朱老师的比赛获胜的MFC框架,你觉得可以吗?我还没试过。或者把你写的框架发给我参考一下行吗?

该用户从未签到

发表于 2011-5-8 16:19:23 | 显示全部楼层
呵呵,因为我毕业后,还很少有机会用OSG,所以目前我没有能力写出比较好的框架,至于朱老师的,我没有看过,我觉得应该可以吧,看您的目的了,如果是做项目和产品,可能要小心一些,如果是是做科研,我觉得这个不算是一个大的问题。实际上我的毕设,每次运行完程序,mfc那个内存泄露也是一串串的。

该用户从未签到

 楼主| 发表于 2011-5-8 20:26:43 | 显示全部楼层
看来还是用单文档好了不知道为什么array那里不会出现这种情况?我的电脑配置应该算是很高的了

该用户从未签到

发表于 2011-5-9 09:43:03 | 显示全部楼层
如果您用的就是osgviewerMFC,那么它不会有任何问题;我想问题还是出在您自己的配置或者代码编写上

该用户从未签到

 楼主| 发表于 2011-5-9 14:51:38 | 显示全部楼层
我并没有加入任何代码 难道是cmake编译时选项设置的问题?

该用户从未签到

发表于 2011-5-10 08:53:55 | 显示全部楼层
没什么需要设置的选项,您可以检查自己的开发环境和OSG库的编译环境是否相符
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表