【问题标题】:Can an OGRE engine render into any window?OGRE 引擎可以渲染到任何窗口吗?
【发布时间】:2011-12-06 18:10:03
【问题描述】:

我正在制作一个在内部使用 OGRE 的小型插件式图形引擎界面。这个想法是,在 Windows 或 Linux 中创建程序的人可以使用我的插件来进行他们需要做的任何图形渲染。

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

让我感到困惑的是,该应用程序是用 VC++ 编写的,因此具有 Windows 风格的菜单和用于绘图的客户区。但是由于 OGRE 创建了自己的渲染窗口,我是否可以将应用程序窗口的客户区的句柄发送给 OGRE,然后 OGRE 会在窗口的客户区完成所有的绘制?

我是 Windows 编程新手,而且时间有限,所以不得不在这里提问。

【问题讨论】:

    标签: windows visual-c++ com ogre3d ogre


    【解决方案1】:

    也许这会有所帮助:

    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 类,用于获取句柄。 句柄被插入到 Ogre::NameValuePairList 作为 name:"parentWindowHandle" 值:你的句柄和十作为参数发送到 OgreRoot::createRenderWindow()。我用 Qt 尝试了这段代码,它奏效了。如果它不起作用,请尝试使用 externalWindowHandle 作为参数名称。

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

    【讨论】:

    • 哇,这太酷了!谢谢。我需要一段时间才能让这段代码正常工作并将你的答案标记为已接受或投票,因为我仍在学习 VC++。
    • 雅罗斯拉夫,你能再帮忙吗?我试过按照你的方式编写代码,但它会创建一个单独的窗口。它不会呈现到我的窗口中。我已经在这里发布了整个代码:ogre3d.org/forums/viewtopic.php?f=2&t=67402,但还没有得到任何真正的帮助。
    • 自己解决了。链接在这里:ogre3d.org/forums/viewtopic.php?f=2&t=67402
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2021-09-17
    • 2011-06-21
    • 2019-08-06
    • 2011-05-05
    • 2013-06-08
    相关资源
    最近更新 更多