Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 230

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

1

12.10.2009, 14:22

CEGUI konnte nicht initialisiert werden

Hey Leute,
hab mich jetzt mit CEGUI befasst und kann soweit CEGUI dem SFML system bekannt machen. Gestern abend hab ich dann versucht imagesets usw. dem System bekannt zu machen aber das will noch nicht richtig funktionieren. Hab das Problem schon ein wenig eingegrenzt aber weiß nicht wo der Fehler genau jetzt liegt. Ich benutze CEGUI 0.6.0.

In diesem Bereich liegt der Fehler

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
int cGame::InitializeCEGUI()
{   
    std::ofstream Log;
    Log.open("Log.txt",std::ios::out);
    try
    {
        CeGuiRenderer = new CEGUI::OpenGLRenderer(0,WindowWidth,WindowHeight);
        CeGuiSystem = new CEGUI::System(CeGuiRenderer);

        CEGUI::Imageset::setDefaultResourceGroup( "imagesets" );
        CEGUI::Font::setDefaultResourceGroup( "fonts" );
        CEGUI::Scheme::setDefaultResourceGroup( "schemes" );
        CEGUI::WidgetLookManager::setDefaultResourceGroup( "looknfeel" );
        CEGUI::WindowManager::setDefaultResourceGroup( "layouts" );
        CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts");
        CEGUI::SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");

        CeGuiResourceProvider = static_cast<CEGUI::DefaultResourceProvider*>(CEGUI::System::getSingleton().getResourceProvider());
        CeGuiResourceProvider->setResourceGroupDirectory ( "imagesets" , "Data/" ) ;
        CeGuiResourceProvider->setResourceGroupDirectory ( "fonts" , "Data/" ) ;
        CeGuiResourceProvider->setResourceGroupDirectory ( "schemes" , "Data/" ) ;
        CeGuiResourceProvider->setResourceGroupDirectory ( "looknfeel" , "Data/" ) ;
        CeGuiResourceProvider->setResourceGroupDirectory ( "layouts" , "Data/" ) ;
        if ( ! CEGUI::FontManager::getSingleton ( ).isFontPresent ( "Commonwealth-10" ) )
        {
            CEGUI::FontManager::getSingleton ( ).createFont ( "Commonwealth-10.font" ) ;
        }
        CEGUI::System::getSingleton().setDefaultFont ("Commonwealth-10") ;
        CEGUI::System::getSingleton().setDefaultMouseCursor ("TaharezLook", "MouseArrow") ;
        CEGUI::System::getSingleton().setDefaultTooltip ("TaharezLook/Tooltip") ;
    }
    catch ( CEGUI::Exception &MyException )
    {   
        Log << MyException.getFileName() << std::endl << MyException.getName() << std::endl << MyException.getMessage();
    }
    Log.close();
    return 0;
}


In der Log steht danach dann folgendes:

C-/C++-Quelltext

1
2
3
..\..\..\src\CEGUIDefaultResourceProvider.cpp
CEGUI::InvalidRequestException
DefaultResourceProvider::load - TaharezLook.scheme does not exist


Die ganzen Schemes und Fonts usw. sind alle im Data Ordner und dieser Ordner ist bei der Exe.

Hoffe mir kann jemand helfen, Gruß michi

Toa

Alter Hase

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

2

12.10.2009, 15:06

1. Reihenfolge stimmt nicht ganz.
2. Der Zeichensatz kann beim laden Probleme machen

PseudoCode:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(...)

// Standardressourcengruppen setzen

    CEGUI::Imageset::setDefaultResourceGroup("imagesets");
    CEGUI::Font::setDefaultResourceGroup("fonts");
    CEGUI::Scheme::setDefaultResourceGroup("schemes");
    CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeel");
    CEGUI::WindowManager::setDefaultResourceGroup("layouts");

    // Standardverzeichnisse setzen

    m_lpResourceProvider = static_cast<CEGUI::DefaultResourceProvider*>( m_lpSystem->getResourceProvider() );
    m_lpResourceProvider->setResourceGroupDirectory( "imagesets", "Data\\imagesets\\" );
    m_lpResourceProvider->setResourceGroupDirectory( "fonts", "Data\\fonts\\" );
    m_lpResourceProvider->setResourceGroupDirectory( "schemes", "Data\\schemes\\" );
    m_lpResourceProvider->setResourceGroupDirectory( "looknfeel", "Data\\looknfeel\\" );
    m_lpResourceProvider->setResourceGroupDirectory( "layouts", "Data\\layouts\\" );

    //Schema laden

    CEGUI::SchemeManager::getSingleton().loadScheme( (CEGUI::utf8*) "TaharezLook.scheme");

    //Mauszeiger laden

    m_lpSystem->setDefaultMouseCursor( (CEGUI::utf8*) "TaharezLook", (CEGUI::utf8*) "MouseArrow");
    CEGUI::MouseCursor::getSingleton().setImage("TaharezLook", "MouseArrow");

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 230

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

3

12.10.2009, 16:12

So habs jetzt geändert. Sieht nun folgendermaßen aus.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int cGame::InitializeCEGUI()
{   
    std::ofstream Log;
    Log.open("Log.txt",std::ios::out);
    try
    {
        CeGuiRenderer = new CEGUI::OpenGLRenderer(0,WindowWidth,WindowHeight);
        CeGuiSystem = new CEGUI::System(CeGuiRenderer);

        CEGUI::Imageset::setDefaultResourceGroup("imagesets");
        CEGUI::Font::setDefaultResourceGroup("fonts");
        CEGUI::Scheme::setDefaultResourceGroup("schemes");
        CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeel");
        CEGUI::WindowManager::setDefaultResourceGroup("layouts");
        CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts");

        CeGuiResourceProvider = static_cast<CEGUI::DefaultResourceProvider*>(CeGuiSystem->getResourceProvider());
        
        CeGuiResourceProvider->setResourceGroupDirectory ( "imagesets" , "Data/" ) ;
        CeGuiResourceProvider->setResourceGroupDirectory ( "fonts" , "Data/" ) ;
        CeGuiResourceProvider->setResourceGroupDirectory ( "schemes" , "Data/" ) ;
        CeGuiResourceProvider->setResourceGroupDirectory ( "looknfeels" , "Data/" ) ;
        CeGuiResourceProvider->setResourceGroupDirectory ( "layouts" , "Data/" ) ;
        

        CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*) "TaharezLook.scheme");
        CeGuiSystem->setDefaultMouseCursor((CEGUI::utf8*)"TaharezLook",(CEGUI::utf8*)"MouseArrow") ;
        CEGUI::MouseCursor::getSingleton().setImage("TaharezLook", "MouseArrow"); 
    }
    catch ( CEGUI::Exception &MyException )
    {   
        Log << MyException.getFileName() << std::endl << MyException.getName() << std::endl << MyException.getMessage();
    }
    Log.close();
    return 0;
}


Jetzt zeigt er mir schon den Mauszeiger in der Mitte des Fensters an. Mein Problem jetzt aber. Wenn ich auf beenden gehe, kommt nachdem mein Programm geschlossen wurde, unter windows 7, der "Game.exe funktioniert nicht mehr" Dialog.

Muss man noch bestimmte Clear Funktionen am ende ausführen oder macht das CeGui alleine ?
Das einzigste was ich mache ist das hier.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
void cGame::CleanUp()
{
    // cleanup the all states

    while ( !States.empty() ) 
    {
        States.back()->CleanUp();
        States.pop_back();
    }
    this->Window.Close();
    delete CeGuiRenderer;
    delete CeGuiSystem;
}


Im CeGui.log steht auch nichts von fehlern. Alles in ordnung anscheind.

Toa

Alter Hase

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

4

12.10.2009, 16:35

debugg halt mal bei welcher Zeile der Fehler geworfen wird...

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 230

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

5

12.10.2009, 18:17

Hab ein wenig rumprobiert und gemerkt das ich kein delete benutzen darf um die Singletons von CEGUI zu löschen.

Werbeanzeige