[GearMaster开发]OGRE和WinForm的混合

本文介绍如何将OGRE图形渲染引擎与窗口界面程序结合,通过设置外部窗口句柄实现地图编辑器等应用的开发,并提供了解决刷新问题的具体方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无论是GearMaster还是之后开发的3d地图,都会需要一个窗口界面的地图编辑器。然而 OGRE范例提供的ExampleApplication类是针对游戏独占界面的,也就是不能和mfc/ .net windows form这类用于开发窗口界面程序的库混合使用。这个问题以前一直未解决。然而事实上解决办法十分简单。

问题的核心在于RenderWindow。OGRE是把窗口作为一个类独立于渲染系统,而我们只要把这个渲染窗口类嵌入到指定的窗口即可。代码如下:

NameValuePairList opts;
 opts[ "externalWindowHandle" ] = StringConverter::toString( iHandle );
 m_pRenderWindow = m_pRoot->createRenderWindow( "OGRE Panel", 100, 100, false, &opts );

我们只需要吧iHandel赋值为指定window的句柄即可。当然这个window是win32定义的概念,也就是说你可以把一个按钮当成是window。获取句柄的方法只需要参照对应的库即可。

 当然,创建之后还要解决刷新的问题。范例使用了root::startRendering()了事,这样会无法配合窗口界面的更新。正确的办法是每次窗口要刷新的时候,调用:

m_pRoot->renderOneFrame();//渲染一帧
 m_pRenderWindow->update();//刷新renderWindow

后面的工作就十分好办了,OGRE和form各司其职,基本不会干扰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值