Crash in debug, windows, qtcreator

Problems building or running the engine, queries about how to use features etc.
Post Reply
xrgo
OGRE Expert User
OGRE Expert User
Posts: 1148
Joined: Sat Jul 06, 2013 10:59 pm
Location: Chile
x 168

Crash in debug, windows, qtcreator

Post by xrgo »

EDIT: oops! just remembered that -DNDEBUG must fit the one used by ogre =(, been throuth that before and always forget it... anyways in case someone needs this codes... =) thanks


Hello! I am currently porting my engine to Windows, from linux.
first I tried one simple Ogre example I made...
When in release it works fine! but in debug it crashes in createRenderWindow:

Code: Select all

void yEngine::init(){

    //Init Ogre::Root, with no cfg Files
    Ogre::Root* root = new Ogre::Root("","");

    //Install RenderSystem Plugin
    Ogre::GL3PlusPlugin* glPlugin = OGRE_NEW Ogre::GL3PlusPlugin();
    Ogre::Root::getSingleton().installPlugin(glPlugin);

    //Install ParticleFX Plugin
    Ogre::ParticleFXPlugin* pfxPlugin = OGRE_NEW Ogre::ParticleFXPlugin();
    root->installPlugin(pfxPlugin);

    //Use the first available Renderer
    Ogre::RenderSystem* renderSys = root->getAvailableRenderers()[0];
    root->setRenderSystem(renderSys);

    //Initialize Root
    root->initialise(false);
    root->addFrameListener(this);

    //Initialize renderWindow
    Ogre::NameValuePairList params;
    params["gamma"] = "true";
    params["FSAA"] = "8";

    Ogre::RenderWindow* renderWindow = root->createRenderWindow("OgreTest", 1280, 720, false, &params);

    //Create the SceneManager
    sceneManager = root->createSceneManager( Ogre::ST_GENERIC, 4, Ogre::INSTANCING_CULLING_THREADED, "SceneManager" );

    //Create the MainCamera
    Ogre::Camera* mainCamera = sceneManager->createCamera("Camera");
    mainCamera->setAutoAspectRatio(true);
    mainCamera->setNearClipDistance(0.01);
    mainCamera->setFarClipDistance(1000.0);
    //And attach it to a SceneNode
    mainCameraNode = sceneManager->getRootSceneNode()->createChildSceneNode();
    mainCamera->detachFromParent();
    mainCameraNode->attachObject(mainCamera);
    mainCamera->setPosition(0,500,500);
    mainCamera->setDirection(Ogre::Vector3(0,0,0)-mainCamera->getPosition());

    //Add media
    Ogre::ResourceGroupManager::getSingleton().addResourceLocation("./media/","FileSystem");
    Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();

    //Create a basic Workspace
    const Ogre::IdString worksSpaceName = "sceneworkspace";
    root->getCompositorManager2()->createBasicWorkspaceDef(worksSpaceName, Ogre::ColourValue::Black);
    Ogre::CompositorWorkspace* workspace = root->getCompositorManager2()->addWorkspace(sceneManager, renderWindow, mainCamera, worksSpaceName, true);

    Ogre::ArchiveVec library;

    Ogre::Archive *archiveLibrary = Ogre::ArchiveManager::getSingletonPtr()->load("../../yoyEngine/media/Hlms/Common/GLSL", "FileSystem", true );
    library.push_back( archiveLibrary );

    //Register Hlms shader templates
    Ogre::Archive *archiveUnlit = Ogre::ArchiveManager::getSingletonPtr()->load( "../../yoyEngine/media/Hlms/Unlit/GLSL", "FileSystem", true );
    Ogre::HlmsUnlit *hlmsUnlit = OGRE_NEW Ogre::HlmsUnlit( archiveUnlit, &library );
    Ogre::Root::getSingleton().getHlmsManager()->registerHlms( hlmsUnlit );

    Ogre::Archive *archivePbs = Ogre::ArchiveManager::getSingletonPtr()->load( "../../yoyEngine/media/Hlms/Pbs/GLSL", "FileSystem", true );
    Ogre::HlmsPbs* hlmsPbs = OGRE_NEW Ogre::HlmsPbs( archivePbs, &library );
    Ogre::Root::getSingleton().getHlmsManager()->registerHlms( hlmsPbs );
    hlmsPbs->setShadowSettings(Ogre::HlmsPbs::PCF_4x4);

    //Get the cube Mesh
    Ogre::v1::MeshPtr cubeMesh = Ogre::v1::MeshManager::getSingletonPtr()->load("cube.mesh",Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
    Ogre::MeshPtr cubeMeshV2 = Ogre::MeshManager::getSingleton().createManual( "cubeV2.mesh", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME );
    //Import the v1 mesh to v2
    cubeMeshV2->importV1( cubeMesh.get(), true, true, true );
    cubeMesh->unload();

    Ogre::String datablockName = "CubeMat";
    Ogre::HlmsPbsDatablock* cubeDatablock = static_cast<Ogre::HlmsPbsDatablock*>(
                                          hlmsPbs->createDatablock( datablockName,
                                          datablockName,
                                          Ogre::HlmsMacroblock(),
                                          Ogre::HlmsBlendblock(),
                                          Ogre::HlmsParamVec() ) );

    Ogre::HlmsTextureManager::TextureLocation texLocation;
    texLocation = Ogre::Root::getSingletonPtr()->getHlmsManager()->getTextureManager()->createOrRetrieveTexture( "grid.png", Ogre::HlmsTextureManager::TEXTURE_TYPE_ENV_MAP );
    cubeDatablock->setTexture( Ogre::PBSM_DIFFUSE, texLocation.xIdx, texLocation.texture );
    texLocation = Ogre::Root::getSingletonPtr()->getHlmsManager()->getTextureManager()->createOrRetrieveTexture( "cubemap.dds", Ogre::HlmsTextureManager::TEXTURE_TYPE_ENV_MAP );
    cubeDatablock->setTexture( Ogre::PBSM_REFLECTION, texLocation.xIdx, texLocation.texture );

    cubeDatablock->setDiffuse(Ogre::Vector3(1,1,1));
    cubeDatablock->setFresnel(Ogre::Vector3::UNIT_SCALE*0.1,false);
    cubeDatablock->setSpecular(Ogre::Vector3(0,0,0));
    cubeDatablock->setRoughness(0.9);

    //Create a Light
    Ogre::Light* directionalLight = sceneManager->createLight();
    directionalLight->setDiffuseColour(1, 1, 1);
    directionalLight->setType(Ogre::Light::LT_DIRECTIONAL);
    Ogre::SceneNode* lightNode = sceneManager->getRootSceneNode()->createChildSceneNode();
    lightNode->attachObject(directionalLight);
    directionalLight->setDirection(Ogre::Vector3(-1, -1, -1));
    directionalLight->setPowerScale(1);

    //Create a Cube
    Ogre::Item* cubeItem = sceneManager->createItem(cubeMeshV2);
    cubeNode = sceneManager->getRootSceneNode()->createChildSceneNode();
    cubeNode->attachObject(cubeItem);
    cubeNode->scale(Ogre::Vector3::UNIT_SCALE);
    cubeNode->setPosition(0,0,0);
    cubeItem->setCastShadows(false);
    cubeItem->setDatablock(cubeDatablock);

    root->startRendering();
}
this is the callstack:
1 std::_Deallocate xmemory0 103 0x7ff7ecf1fd70
2 std::allocator<char>::deallocate xmemory0 721 0x7ff7ecf20708
3 std::_Wrap_alloc<std::allocator<char>>::deallocate xmemory0 988 0x7ff7ecf20687
4 std::string::_Tidy xstring 2260 0x7ff7ecf204c1
5 std::string::~string xstring 1017 0x7ff7ecf1f811
6 std::pair<Ogre::IdString,std::string>::~pair<Ogre::IdString,std::string> testYoy 0x7ff7ecf27c9a
7 Ogre::Hlms::findParamInVec OgreHlms.cpp 1492 0x7ff7ed33d85a
8 Ogre::HlmsDatablock::HlmsDatablock OgreHlmsDatablock.cpp 119 0x7ff7ed1a6866
9 Ogre::HlmsLowLevelDatablock::HlmsLowLevelDatablock OgreHlmsLowLevelDatablock.cpp 42 0x7ff7edbc6274
10 Ogre::HlmsLowLevel::createDatablockImpl OgreHlmsLowLevel.cpp 374 0x7ff7ed935cc8
11 Ogre::Hlms::createDatablock OgreHlms.cpp 1414 0x7ff7ed33d061
12 Ogre::Hlms::createDefaultDatablock OgreHlms.cpp 1336 0x7ff7ed33a847
13 Ogre::Hlms::_changeRenderSystem OgreHlms.cpp 2383 0x7ff7ed33f6c8
14 Ogre::HlmsManager::registerHlms OgreHlmsManager.cpp 534 0x7ff7ed1af095
15 Ogre::Root::oneTimePostWindowInit OgreRoot.cpp 1494 0x7ff7ed2c151c
16 Ogre::Root::createRenderWindow OgreRoot.cpp 1309 0x7ff7ed2c723a
17 yEngine::init yEngine.cpp 42 0x7ff7ecf20bda
18 main main.cpp 9 0x7ff7ecf1f263
19 WinMain qtmain_win.cpp 123 0x7ff7ee005a5d
20 invoke_main exe_common.inl 99 0x7ff7ee00171d
... <More>
I am using windows 10, qtcreator, ogre2.1-pso

I have the feeling that might be something about linking/dependencies :S, so here its my .pro:

Code: Select all

QT += core \
        gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = testYoy
TEMPLATE = app
DEFINES += BLENDER_NEW

QMAKE_CXXFLAGS += \
    -O3 -DNDEBUG

SOURCES += \
    main.cpp \
    yEngine.cpp

HEADERS += \
    yEngine.h

INCLUDEPATH += \
    ./src/ \
    ../../yoyEngine/Dependencies/boost/include \
    ../../yoyEngine/Dependencies/Ogre/include \
    ../../yoyEngine/Dependencies/Ogre/include/Animation \
    ../../yoyEngine/Dependencies/Ogre/Components/MeshLodGenerator/include \
    ../../yoyEngine/Dependencies/Ogre/RenderSystems/GL3Plus/include \
    ../../yoyEngine/Dependencies/Ogre/RenderSystems/GL3Plus/include/GL \
    ../../yoyEngine/Dependencies/Ogre/RenderSystems/GL3Plus/include/GLSL \
    ../../yoyEngine/Dependencies/Ogre/RenderSystems/GL3Plus/include/windowing/GLX \
    ../../yoyEngine/Dependencies/Ogre/RenderSystems/GL3Plus/include/windowing/gtk \
    ../../yoyEngine/Dependencies/Ogre/RenderSystems/GL3Plus/include/windowing/SDL \
    ../../yoyEngine/Dependencies/Ogre/RenderSystems/GL3Plus/include/windowing/win32 \
    ../../yoyEngine/Dependencies/Ogre/Components/Hlms/Common/include \
    ../../yoyEngine/Dependencies/Ogre/Components/Hlms/Pbs/include \
    ../../yoyEngine/Dependencies/Ogre/Components/Hlms/Unlit/include \
    ../../yoyEngine/Dependencies/Ogre/Components/Overlay/include \
    ../../yoyEngine/Dependencies/Ogre/PlugIns/ParticleFX/include \

LIBS += \
    user32.lib \
    gdi32.lib \
    opengl32.lib \
    ws2_32.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/OgreOverlayStatic.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/OgreHlmsPbsStatic.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/OgreHlmsUnlitStatic.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/RenderSystem_GL3PlusStatic.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/OgreMainStatic.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/OgreMeshLodGeneratorStatic.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/Plugin_ParticleFXStatic.lib \
#    ../../yoyEngine/Dependencies/boost/win/libboost_thread-vc140-mt-1_61.lib \
#    ../../yoyEngine/Dependencies/boost/win/libboost_system-vc140-mt-1_61.lib \
#    ../../yoyEngine/Dependencies/boost/win/libboost_date_time-vc140-mt-1_61.lib \
#    ../../yoyEngine/Dependencies/boost/win/libboost_chrono-vc140-mt-1_61.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/ogredeps/zlib/zlib.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/ogredeps/zziplib.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/ogredeps/FreeImage.lib \
#    ../../yoyEngine/Dependencies/Ogre/win/ogredeps/freetype.lib \
    \
    ../../yoyEngine/Dependencies/Ogre/win/OgreOverlayStatic_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/OgreHlmsPbsStatic_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/OgreHlmsUnlitStatic_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/RenderSystem_GL3PlusStatic_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/OgreMainStatic_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/OgreMeshLodGeneratorStatic_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/Plugin_ParticleFXStatic_d.lib \
    ../../yoyEngine/Dependencies/boost/win/libboost_thread-vc140-mt-gd-1_61.lib \
    ../../yoyEngine/Dependencies/boost/win/libboost_system-vc140-mt-gd-1_61.lib \
    ../../yoyEngine/Dependencies/boost/win/libboost_date_time-vc140-mt-gd-1_61.lib \
    ../../yoyEngine/Dependencies/boost/win/libboost_chrono-vc140-mt-gd-1_61.lib \
    ../../yoyEngine/Dependencies/Ogre/win/ogredeps/zlib/zlib_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/ogredeps/zziplib_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/ogredeps/FreeImage_d.lib \
    ../../yoyEngine/Dependencies/Ogre/win/ogredeps/freetype_d.lib \
any ideas =D?
Post Reply