首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >食人魔引擎可以渲染到任何窗口中吗?

食人魔引擎可以渲染到任何窗口中吗?
EN

Stack Overflow用户
提问于 2011-10-13 16:01:41
回答 1查看 2.2K关注 0票数 0

我正在做一个小插件式的图形引擎界面,它内部使用了OGRE。这个想法是,一个人在Windows或Linux中创建一个程序,将能够使用我的插件来做他们需要做的任何图形渲染。

事实上,已经有一个Windows应用程序使用GDI和D3D调用来进行绘图,我需要对其进行修改,以便它可以使用OGRE进行绘图。

令我困惑的是,这个应用程序是用VC++编写的,因此有Windows式的菜单和用于绘图的客户区。但由于OGRE创建了自己的渲染窗口,我是否可以将应用程序窗口的客户区的句柄发送给OGRE,OGRE会在窗口的客户区中完成所有绘制吗?

我是Windows编程的新手,有一点时间限制,所以我不得不在这里问一下。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-17 23:30:12

也许这能有所帮助:

代码语言:javascript
复制
Ogre::String winHandle;
  #ifdef WIN32
  // Windows code
  winHandle += Ogre::StringConverter::toString((unsigned long)(this->parentWidget()->winId()));
  #else
  // Unix code
  QX11Info info = x11Info();
  winHandle  = Ogre::StringConverter::toString((unsigned long)(info.display()));
  winHandle += ":";
  winHandle += Ogre::StringConverter::toString((unsigned int)(info.screen()));
  winHandle += ":";
  winHandle += Ogre::StringConverter::toString((unsigned long)(this->parentWidget()->winId()));
  #endif

  Ogre::NameValuePairList params;
  params["parentWindowHandle"] = winHandle;

  mOgreWindow = mOgreRoot->createRenderWindow( "QOgreWidget_RenderWindow",
                           this->width(),
                           this->height(),
                           false,
                           &params );

QX11Info是Qt类,用于获取句柄。句柄作为name:"parentWindowHandle“值插入到Ogre::NameValuePairList中,值:您的句柄,ten作为参数发送到OgreRoot::createRenderWindow()。我用Qt尝试了这段代码,它起作用了。如果不起作用,可以尝试使用externalWindowHandle作为参数名。

来源:http://www.ogre3d.org/tikiwiki/QtOgre

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7751097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档