Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: ieroglif от Сентябрь 07, 2011, 00:27



Название: Ogre3D не запускается. падает на выборе рендеров
Отправлено: ieroglif от Сентябрь 07, 2011, 00:27
собираю вместе Ogre3D и Qt.
и то и другое последнее скачано и обновлено =) + MinGW последний
воспользовался этой (http://www.ogre3d.org/tikiwiki/QtOgre&structure=Cookbook) и этой (http://www.ogre3d.org/tikiwiki/Setting+Up+An+Application+-+QtCreator) статьями, дополнительно перенастроил внутри проекта компилятор на новый mingw.
кусок инициализации на котором падает:
Код
C++ (Qt)
   // create the main ogre object
   mOgreRoot = new Ogre::Root( plugins_file, ogre_cfg_file, ogre_log );
 
   // setup a renderer
   Ogre::RenderSystemList::const_iterator renderers = mOgreRoot->getAvailableRenderers().begin();
   Ogre::LogManager::getSingleton().logMessage("!!Get Renders");
 
   while(renderers != mOgreRoot->getAvailableRenderers().end())
   {
       Ogre::LogManager::getSingleton().logMessage("ku");
       Ogre::String rName = (*renderers)->getName();
       Ogre::LogManager::getSingleton().logMessage(rName);
       if (rName == "OpenGL Rendering Subsystem")
           break;
       renderers++;
   }
   Ogre::LogManager::getSingleton().logMessage("Render ok!");
 
   Ogre::RenderSystem *renderSystem = *renderers;
вывод в лог:
Код:
Запускается C:\Qt\OgreSDK\bin\Release\OgreTest.exe...
Creating resource group General
Creating resource group Internal
Creating resource group Autodetect
SceneManagerFactory for type 'DefaultSceneManager' registered.
Registering ResourceManager for type Material
Registering ResourceManager for type Mesh
Registering ResourceManager for type Skeleton
MovableObjectFactory for type 'ParticleSystem' registered.
OverlayElementFactory for type Panel registered.
OverlayElementFactory for type BorderPanel registered.
OverlayElementFactory for type TextArea registered.
Registering ResourceManager for type Font
ArchiveFactory for archive type FileSystem registered.
ArchiveFactory for archive type Zip registered.
DDS codec registering
FreeImage version: 3.13.1
This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,gif,hdr,g3,sgi,exr,j2k,j2c,jp2,pfm,pct,pict,pic,bay,bmq,cr2,crw,cs1,dc2,dcr,dng,erf,fff,hdr,k25,kdc,mdc,mos,mrw,nef,orf,pef,pxn,raf,raw,rdc,sr2,srf,arw,3fr,cine,ia,kc2,mef,nrw,qtk,rw2,sti,drf,dsc,ptx,cap,iiq,rwz
Registering ResourceManager for type HighLevelGpuProgram
Registering ResourceManager for type Compositor
MovableObjectFactory for type 'Entity' registered.
MovableObjectFactory for type 'Light' registered.
MovableObjectFactory for type 'BillboardSet' registered.
MovableObjectFactory for type 'ManualObject' registered.
MovableObjectFactory for type 'BillboardChain' registered.
MovableObjectFactory for type 'RibbonTrail' registered.
../plugins.cfg not found, automatic plugin loading disabled.
*-*-* OGRE Initialising
*-*-* Version 1.7.2 (Cthugha)
!!Get Renders
Программа неожиданно завершилась.
C:\Qt\OgreSDK\bin\Release\OgreTest.exe завершился с кодом -1073741819
вопрос обычен: в чём косяк?


Название: Re: Ogre3D не запускается. падает на выборе рендеров
Отправлено: lit-uriy от Сентябрь 07, 2011, 06:45
а gdb что по этому поводу говорит?


Название: Re: Ogre3D не запускается. падает на выборе рендеров
Отправлено: Disa от Февраль 08, 2012, 12:17
Получилось ли как-то решить эту проблему?


Название: Re: Ogre3D не запускается. падает на выборе рендеров
Отправлено: Hronom от Март 10, 2012, 19:29
Моя инициализация:
Код:
bool GraphicSystem::init()
{
//-----------------------------------------------------
// 1 Создание рута
//-----------------------------------------------------
mRoot = new Ogre::Root(mPluginsCfg, mOgreCfg, mOgreLogFile);

//-----------------------------------------------------
// 2 Настройка приложение и создание окна
//-----------------------------------------------------
if(!(mRoot->restoreConfig() || mRoot->showConfigDialog()))
{
delete mRoot;
return false;
}

mRenderWindow = mRoot->initialise(true, "JustGame");

// Set default mipmap level (note: some APIs ignore this)
Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);

//-----------------------------------------------------
// 3 Загрузка ресурсов из конфига
//-----------------------------------------------------
Ogre::ConfigFile xConfigFile;
xConfigFile.load(mResourcesCfg);

// Проходим по всем секция в файле
Ogre::ConfigFile::SectionIterator xSection = xConfigFile.getSectionIterator();

Ogre::String xSecName, xTypeName, xArchName;
while (xSection.hasMoreElements())
{
xSecName = xSection.peekNextKey();
Ogre::ConfigFile::SettingsMultiMap *settings = xSection.getNext();
Ogre::ConfigFile::SettingsMultiMap::iterator i;
for (i = settings->begin(); i != settings->end();   i++)
{
xTypeName = i->first;
xArchName = i->second;
Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
xArchName, xTypeName, xSecName);
}
}

// Грузим все ресурсы
Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();

//-----------------------------------------------------
// 4 Создание менеджера сцен
//
// ST_GENERIC = octree
// ST_EXTERIOR_CLOSE = simple terrain
// ST_EXTERIOR_FAR = nature terrain (depreciated)
// ST_EXTERIOR_REAL_FAR = paging landscape
// ST_INTERIOR = Quake3 BSP
//-----------------------------------------------------
mSceneManager = mRoot->createSceneManager(Ogre::ST_GENERIC);

//-----------------------------------------------------
// 5 Создание камеры
//-----------------------------------------------------
mCamera = mSceneManager->createCamera("MainCamera");
mCamera->setPosition(Ogre::Vector3(0,0,100));
mCamera->lookAt(Ogre::Vector3(0,0,0));
mCamera->setNearClipDistance(5);

//-----------------------------------------------------
// 6 Создание вьюпорта
//-----------------------------------------------------
Ogre::Viewport* xViewport = mRenderWindow->addViewport(mCamera);
xViewport->setBackgroundColour(Ogre::ColourValue(0,0,0));

mCamera->setAspectRatio(Ogre::Real(xViewport->getActualWidth()) / Ogre::Real(xViewport->getActualHeight()));

// Set ambient light
mSceneManager->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));

//-----------------------------------------------------
// 7 Инициализация MyGUI
//-----------------------------------------------------
mOgrePlatform = new MyGUI::OgrePlatform();
mOgrePlatform->initialise(mRenderWindow, mSceneManager, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, mMyGUILogFile); // mWindow is Ogre::RenderWindow*, mSceneManager is Ogre::SceneManager*
mMyGUI = new MyGUI::Gui();
mMyGUI->initialise();

//-----------------------------------------------------
// 8 Добавление слушателя событий
//-----------------------------------------------------
Ogre::WindowEventUtilities::addWindowEventListener(mRenderWindow, this);
mRoot->addFrameListener(this);

return true;
}
В своей гейме использую кют, но не использую мета систему.
Вот я на днях ещё написал парочку статей. Посмотрите может у вас что-то отличается...
В перовой всё, что я делал, для сборки из исходников Ogre3D, MyGUI, Bullet Physics с использованием MinGW, CMake и среды разработки QtCreator под Windows.
Во второй мини статье находятся мэйк файлы проекта который объединяет в себе Ogre3D, MyGUI, Bullet Physics, OpenAL, FreeALUT, Qt.
Вот всё это дело:
  • Сборка из исходников Ogre3D, MyGUI, Bullet Physics с использованием MinGW, CMake и среды разработки QtCreator под Windows (http://hronom.blogspot.com/2012/03/ogre3d-mygui-bullet-physics-mingw-cmake_593.html)
  • Создание проекта работающего с Ogre3D, MyGUI, Bullet Physics, OpenAL, FreeALUT, Qt с использованием MinGW, CMake и среды разработки QtCreator под Windows (http://hronom.blogspot.com/2012/03/ogre3d-mygui-bullet-physics-mingw-cmake_10.html)
Проект игры на гитхабе:
Основная логика игры https://github.com/Hronom/JustGame
Инициализация различных компонентов https://github.com/Hronom/JustGameCore


Название: Re: Ogre3D не запускается. падает на выборе рендеров
Отправлено: Disa от Март 11, 2012, 10:34
Офигительно! Огромное спасибо!
Я правда уже переметниулся на время в сторону разработчиков под Unity3D, надолго или нет пока не знаю, тк нужно делать большой кусок научной визуализации и быстро. Хотя насколько Unity под это подходит пока толком не пойму, там документации на 600 стр :D

Но форум, сообщество и материалов несравнимо больше чем по Ogre или OSG... На последем только 3и дня ждал модерацию моего сообщения на форуме, чтоб другие пользователи смогли бы увидеть сообщение :D

PS: Меня сейчас немного расстраивает финансовое положение Нокии на рынке и я не знаю как будет в дальнейшем жить Qt. Хотя, конечно, хотелось бы долгих лет :)


Название: Re: Ogre3D не запускается. падает на выборе рендеров
Отправлено: Hronom от Март 11, 2012, 17:25
Офигительно! Огромное спасибо!
Я правда уже переметниулся на время в сторону разработчиков под Unity3D, надолго или нет пока не знаю, тк нужно делать большой кусок научной визуализации и быстро. Хотя насколько Unity под это подходит пока толком не пойму, там документации на 600 стр :D

Но форум, сообщество и материалов несравнимо больше чем по Ogre или OSG... На последем только 3и дня ждал модерацию моего сообщения на форуме, чтоб другие пользователи смогли бы увидеть сообщение :D

PS: Меня сейчас немного расстраивает финансовое положение Нокии на рынке и я не знаю как будет в дальнейшем жить Qt. Хотя, конечно, хотелось бы долгих лет :)

Unity3D отличная штука. Это фактически целый фреймворк для игр и графических программ, там не только графика но и физика, звук и так далее. Мне в юнити не нравится моно и отсутствие поддержки линукса, но это по религиозным соображениям. Если у вас вся суть в написании научной работы и надо сделать быстро, думаю вам скорее всего лучше использовать именно Юнити.

PS: Да меня тоже печалит, что нокиа не спонсирует кют, надеюсь находясь на поддержке опенсорс сообщества он не утратит темпы развития. Вообще очень жаль, что кют не вошёл очень плотно в приложения, очень удобный фреймворк с отличной документацией и талантливыми разработчиками, аналогов ему толком просто нету.