的笔记

随时随地编辑

Ogre嵌入qt笔记

开发环境
ogre 1.72
qt 4.5.2

直接看源码:
https://3dlearn.googlecode.com/svn/trunk/Samples/Ogre/OgreQt

用了一个tab控件,在其中嵌入了一个叫ogrewidget的窗子,作为ogre渲染表面。当然tab不是主窗口,主窗口是mainwindow,tab只是贴在主窗口上。这是从ogitor中抄过来的,这样做很方便扩展更多的窗口控件。



挺折腾的,本来以为三下五去二就可以搞定,实际却碰到一些意向之外的问题。

其一:OGRE与QT存在类型定义的冲突,若干类似unint之类的类型会引起冲突。ogitor的解决方式是当前文件都是用qt名字空间,ogre的标识符都是用OGRE名字空间前缀。当然我也是这样使用的,不过有些地方不规范的使用了局部名字空间,偷懒嘛。

其二:qt窗口的paint消息会将ogre的绘图表面覆盖掉,ogitor使用了2个方法避免,这里单独提出是不是很懂,也许熟悉了qt框架就知道怎么回事了:
 setAttribute(Qt::WA_NoBackground);
 setAttribute(Qt::WA_PaintOnScreen);

其三:帧渲染的使用ogitor带参数了,0.01S,还没来得及理解
renderOneFrame(0.01f);

其四:不懂timer,为什么启动不了?看代码可以发现mainwindows的time回调没有发生。ogitor调试却正常的,难道还要对全局timer对象或其他相关对象搞个初始化,类似rand的srand?或者低级错误了?望了解qt的指教下。

其五:代码挺ugly的,看的时候小心,注释和冗余变量方法都注意跳过。

posted on 2011-04-15 19:26 的笔记 阅读(1464) 评论(4)  编辑 收藏 引用

评论

# re: Ogre嵌入qt笔记 2011-08-05 15:56 杨漱玉青

Hi,夸父,你试过将Ogre的渲染窗体固定住大小吗?
就是当外部的窗口变小时候,Ogre的窗体仍然不变,依靠一个滚动条来调节视窗.
当外部的窗口变大的时候,Ogre的窗体以空白区域或者未知区域来表示.
第二个我解决了,但是第一个滚动条的问题没有解决.  回复  更多评论   

# re: Ogre嵌入qt笔记 2011-08-05 22:30 杨漱玉青

问题解决~~
http://www.ispinel.com/2011/08/05/1932  回复  更多评论   

# re: Ogre嵌入qt笔记 2011-08-06 12:46 夸父的笔记

@杨漱玉青 Well done!
  回复  更多评论   

# re: Ogre嵌入qt笔记[未登录] 2013-02-04 13:42 路人甲

你好,我看代码里一共有四层,但搞不懂为什么要把Ogre封装这么多层呢?我自己写的时候只用一个QWidget子类来承载Ogre,但是碰到一个问题,在用动画时卡在动了之后的某一帧不动了,不知道为何,难道因为直接写在QWidget子类中的原因?  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理