我正在做一个小插件式的图形引擎界面,它内部使用了OGRE。这个想法是,一个人在Windows或Linux中创建一个程序,将能够使用我的插件来做他们需要做的任何图形渲染。
事实上,已经有一个Windows应用程序使用GDI和D3D调用来进行绘图,我需要对其进行修改,以便它可以使用OGRE进行绘图。
令我困惑的是,这个应用程序是用VC++编写的,因此有Windows式的菜单和用于绘图的客户区。但由于OGRE创建了自己的渲染窗口,我是否可以将应用程序窗口的客户区的句柄发送给OGRE,OGRE会在窗口的客户区中完成所有绘制吗?
我是Windows编程的新手,有一点时间限制,所以我不得不在这里问一下。
发布于 2011-10-17 23:30:12
也许这能有所帮助:
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类,用于获取句柄。句柄作为name:"parentWindowHandle“值插入到Ogre::NameValuePairList中,值:您的句柄,ten作为参数发送到OgreRoot::createRenderWindow()。我用Qt尝试了这段代码,它起作用了。如果不起作用,可以尝试使用externalWindowHandle作为参数名。
来源:http://www.ogre3d.org/tikiwiki/QtOgre
https://stackoverflow.com/questions/7751097
复制相似问题