Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 食人魔引擎可以渲染到任何窗口中吗?_Windows_Visual C++_Com_Ogre3d_Ogre - Fatal编程技术网

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

Windows 食人魔引擎可以渲染到任何窗口中吗?,windows,visual-c++,com,ogre3d,ogre,Windows,Visual C++,Com,Ogre3d,Ogre,我正在制作一个小型插件式的图形引擎界面,它在内部使用了食人魔。这个想法是,在Windows或Linux中创建程序的人可以使用我的插件进行他们需要的任何图形渲染 事实上,已经有一个Windows应用程序使用GDI&D3D调用进行绘图,我需要对其进行修改,以便它可以使用OGRE进行绘图 让我困惑的是,这个应用程序是用VC++编程的,因此有Windows风格的菜单和绘图客户端。但既然OGRE创建了自己的渲染窗口,我是否可以将应用程序窗口的客户端区域的句柄发送给OGRE,并且OGRE是否可以在窗口的客户

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

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

让我困惑的是,这个应用程序是用VC++编程的,因此有Windows风格的菜单和绘图客户端。但既然OGRE创建了自己的渲染窗口,我是否可以将应用程序窗口的客户端区域的句柄发送给OGRE,并且OGRE是否可以在窗口的客户端区域中绘制所有图形

我是Windows编程新手,时间有点紧,所以不得不在这里询问。

也许这可以帮助:

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:“parentWindowHandle”值:您的句柄和10作为参数发送到OgreRoot::createRenderWindow()。我用Qt尝试了这段代码,它成功了。如果不起作用,请尝试使用externalWindowHandle作为参数名


来源:

哇,太酷了!谢谢我需要一段时间才能让这段代码正常工作,并将您的答案标记为接受或投票,因为我仍在学习VC++。Jaroslav,您能再帮我一点忙吗?我试着用你的方式编写代码,但它会创建一个单独的窗口。它无法渲染到我的窗口中。我已经在这里发布了全部代码:但还没有得到任何真正的帮助。我自己解决了。链接如下: