Windows 食人魔引擎可以渲染到任何窗口中吗?
我正在制作一个小型插件式的图形引擎界面,它在内部使用了食人魔。这个想法是,在Windows或Linux中创建程序的人可以使用我的插件进行他们需要的任何图形渲染 事实上,已经有一个Windows应用程序使用GDI&D3D调用进行绘图,我需要对其进行修改,以便它可以使用OGRE进行绘图 让我困惑的是,这个应用程序是用VC++编程的,因此有Windows风格的菜单和绘图客户端。但既然OGRE创建了自己的渲染窗口,我是否可以将应用程序窗口的客户端区域的句柄发送给OGRE,并且OGRE是否可以在窗口的客户端区域中绘制所有图形 我是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是否可以在窗口的客户
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,
¶ms );
QX11Info是Qt类,用于获取句柄。
句柄作为名称插入到Ogre::NameValuePairList:“parentWindowHandle”值:您的句柄和10作为参数发送到OgreRoot::createRenderWindow()。我用Qt尝试了这段代码,它成功了。如果不起作用,请尝试使用externalWindowHandle作为参数名
来源:哇,太酷了!谢谢我需要一段时间才能让这段代码正常工作,并将您的答案标记为接受或投票,因为我仍在学习VC++。Jaroslav,您能再帮我一点忙吗?我试着用你的方式编写代码,但它会创建一个单独的窗口。它无法渲染到我的窗口中。我已经在这里发布了全部代码:但还没有得到任何真正的帮助。我自己解决了。链接如下: