#windows #visual-c #com #ogre3d #ogre
#Windows #visual-c #com #ogre3d #ogre
Вопрос:
Я создаю небольшой интерфейс графического движка, который использует OGRE внутри. Идея заключается в том, что человек, создающий программу в Windows или Linux, сможет использовать мой плагин для выполнения любого рендеринга графики, который им нужен.
На самом деле уже есть приложение для Windows, использующее вызовы GDI и D3D для рисования, которое мне нужно изменить, чтобы оно могло использовать OGRE для рисования.
Что меня озадачивает, так это то, что приложение запрограммировано на VC и, следовательно, имеет меню в стиле Windows и клиентскую область для рисования. Но поскольку OGRE создает свое собственное окно для рендеринга, смогу ли я отправить дескриптор клиентской области окна приложения в OGRE и будет ли OGRE выполнять все отрисовки в клиентской области окна?
Я новичок в программировании Windows и немного ограничен во времени, поэтому должен был спросить здесь.
Ответ №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,
amp;params );
QX11Info — это класс Qt, используемый для получения дескриптора.
Дескриптор вставляется в Ogre::NameValuePairList как имя: «parentWindowHandle» значение: ваш дескриптор и десять отправляются в качестве аргумента в OgreRoot::createRenderWindow() . Я попробовал этот код с Qt, и он сработал. Если это не сработает, попробуйте использовать externalWindowHandle в качестве имени параметра.
источник: http://www.ogre3d.org/tikiwiki/QtOgre
Комментарии:
1. Вау, это круто! Спасибо. Мне потребуется некоторое время, чтобы заставить этот код работать и отметить ваш ответ как принятый или проголосовать за него, поскольку я все еще изучаю VC .
2. Ярослав, не мог бы ты помочь немного больше? Я пробовал писать код по-своему, но он создает отдельное окно. Он не отображается в моем окне. Я разместил весь код здесь: ogre3d.org/forums/viewtopic.php?f=2amp;t=67402 и пока не получил никакой реальной помощи.
3. Решил это сам. Ссылка здесь: ogre3d.org/forums/viewtopic.php?f=2amp;t=67402