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

1

11.12.2009, 15:57

tbGUI Schreibverletzung aber warum?

Hallo.
Ich versuche mich gerade das erste Mal an ein GUI-Menü
aber der Compiler spuckt mir folgende Fehlermeldung aus:

C-/C++-Quelltext

1
2
3
4
5
Der Thread 'Win32 Thread' (0x784) hat mit Code 0 (0x0) geendet.
INFO: Nachrichtenschleife wird betreten... (tribase.cpp, Zeile 179, Funktion tbDoMessageLoop)
FEHLER: Die angegebene Textur wurde nicht gefunden! (tbtexturemanager.cpp, Zeile 231, Funktion tbTextureManager::ReleaseTexture)
Eine Ausnahme (erste Chance) bei 0x100a2316 in TicTacToe.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
Unbehandelte Ausnahme bei 0x100a2316 in TicTacToe.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.


Aber warum?

Hier noch der Code für die Initialisierung der GUI:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
tbResult MMMP(int ID, tbGUIMessage* pMsg, tbGUI* pGui)
{

     switch(ID)
     {
     case 101:
         g_pTicTacToe->SetGameStat(GS_GAME);
         break;
     }

    return TB_OK;
}
tbResult CMainMenu::InitGui()
{
    m_GUISkin.pSkinTexture = tbTextureManager::Instance().GetTexture("Data\\GUI.bmp",TRUE, D3DX_DEFAULT, D3DX_DEFAULT, 1, D3DFMT_UNKNOWN, 0, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, D3DCOLOR_XRGB(255, 0, 255));
m_GUISkin.pEffect = new tbEffect; 
    m_GUISkin.pEffect->Init("Data\\GUI.fx"); 
    m_GUISkin.pEffect->GetEffect()->SetTexture("Texture", m_GUISkin.pSkinTexture);
    m_GUISkin.pFont = g_pTicTacToe->m_pFont;
    m_GUISkin.vCursorSize = tbVector2(32.0f, 32.0f);
    m_GUISkin.CursorColor1 = tbColor(1.0f, 1.0f, 1.0f, 0.75f);
    m_GUISkin.CursorColor2 = tbColor(1.0f, 1.0f, 1.0f, 0.75f);
    m_GUISkin.vCursorHotSpot = tbVector2(1.0f, 1.0f);
    m_GUISkin.fCursorSpeed = 300.0f;
    m_GUISkin.EnabledColor = tbColor(1.0f, 1.0f, 1.0f, 0.5f);
    m_GUISkin.DisabledColor = tbColor(1.0f, 1.0f, 1.0f, 0.25f);
    m_GUISkin.HighlightColor = tbColor(1.0f, 1.0f, 1.0f, 0.75f);
    m_GUISkin.vTextSize = tbVector2(1.0f);
    m_GUISkin.EnabledTextColor = tbColor(1.0f, 1.0f, 1.0f, 0.75f);
    m_GUISkin.DisabledTextColor = tbColor(1.0f, 1.0f, 1.0f, 0.25f);
    m_GUISkin.HighlightTextColor = tbColor(1.0f, 1.0f, 1.0f, 1.0f);

    if(m_GUISkin.pSkinTexture == NULL) { TB_ERROR("Fehler beim Laden der Skin-Textur", TB_ERROR); }
    if(m_GUISkin.pEffect == NULL) { TB_ERROR("Fehler beim Laden des Skin-Effekts", TB_ERROR); }

    m_pGui = new tbGUI;
    if(m_pGui->Init(&m_GUISkin, MMMP,
                    tbVector2(800.0f, 600.0f), 
                    tbDirect3D::Instance().GetScreenSize() / tbVector2( 800.0f, 600.0f)))
    {
        TB_ERROR("Fehler beim Erstellen der GUI!", TB_ERROR);
    }

    m_pGui->CreateFrame(100, 0, tbVector2(10.0f, 10.0f), tbVector2(790.0f, 590.0f));
    m_pGui->CreateButton(101, 0, tbVector2(50.0f, 0.0f), tbVector2(120.0f, 50.0f), "Spiel starten");

    m_pGui->SetCurrentPage(0);

    return TB_OK;

}


Und hier zum Unload(), wo er auch abbricht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
tbResult CMainMenu::Unload()
{
    m_GUISkin.pEffect->GetEffect()->SetTexture("Texture", NULL);//hier bricht er ab

    TB_SAFE_DELETE(m_GUISkin.pEffect);

tbTextureManager::Instance().ReleaseTexture(m_GUISkin.pSkinTexture);
    TB_SAFE_DELETE(m_pGui);
    return TB_OK;
}


mfg

2

11.12.2009, 16:57

Re: tbGUI Schreibverletzung aber warum?

Zitat von »"ahhhilfe"«


FEHLER: Die angegebene Textur wurde nicht gefunden!


Ist die Textur in deinem ProjektOrdner?
Metal ist keine Musik sondern eine Religion.

3

11.12.2009, 17:04

Ja die ist da. Alle Dateien sind vorhanden. Hab es schon 10-mal überprüft.

4

11.12.2009, 17:05

Hast du auch geprüft, ob die Textur korrekt geladen wird?

5

11.12.2009, 17:07

C-/C++-Quelltext

1
m_GUISkin.pEffect->GetEffect()->SetTexture("Texture", m_GUISkin.pSkinTexture); 


muss das nich heißen

C-/C++-Quelltext

1
m_GUISkin.pEffect->GetEffect()->SetTexture("Texture.bmp", m_GUISkin.pSkinTexture); 

oder so?
Metal ist keine Musik sondern eine Religion.

6

11.12.2009, 22:23

Hm...in dem Logfile steht, dass die angegebene Textur nicht geladen werden konnte aber die Pfade stimmen alle und auch wenn ich die Textur aus
Galactica nehme, klatt es nicht.

7

11.12.2009, 22:40

Zitat von »"Fabian Kock"«

C-/C++-Quelltext

1
m_GUISkin.pEffect->GetEffect()->SetTexture("Texture", m_GUISkin.pSkinTexture); 


muss das nich heißen

C-/C++-Quelltext

1
m_GUISkin.pEffect->GetEffect()->SetTexture("Texture.bmp", m_GUISkin.pSkinTexture); 

oder so?


Hast du das schon getestet?
Metal ist keine Musik sondern eine Religion.

8

11.12.2009, 22:42

Ja hatte ich aber bleibt alles beim Alten =(

9

12.12.2009, 10:14

Versuchs mal mit ner absoluten Pfadangabe bei der Textur.

10

12.12.2009, 11:06

Danke für deine Antwort. Aber passiert wieder das gleiche.
Und in der Logdatei steht immer noch, dass sie nicht geladen werden konnte:

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
 _________        __    _____
/\___  ___\      /\_\  /\  __\
\/__/\ \__/ _  __\/_/_ \ \ \_\\   ____    _____      __
    \ \ \  /\`´__\ /\ \ \ \  __\ /\ __\_ /\  __\   /´__`\
     \ \ \ \ \ \/  \ \ \ \ \ \_\\\ \\_\ \\ \____\ /\  __/
      \ \_\ \ \_\   \ \_\ \ \____\\ \___\ \ \____\\ \____\
       \/_/  \/_/    \/_/  \/____/ \/__/   \/____/ \/____/

INFO: TriBase-Engine wird initialisiert...  (tribase.cpp, Zeile 86, Funktion tbInit)
INFO: Initialisierung komplett! (tribase.cpp, Zeile 104, Funktion tbInit)
INFO: Der Konfigurationsdialog wird aufgerufen...   (tbconfig.cpp, Zeile 1050, Funktion tbDoConfigDialog)
INFO: Die Direct3D-Komponente wird initialisiert... (tbdirect3d.cpp, Zeile 162, Funktion tbDirect3D::Init)
INFO: Erstellen des Fensters... (tbdirect3d.cpp, Zeile 169, Funktion tbDirect3D::Init)
INFO: Initialisierung von Direct3D...   (tbdirect3d.cpp, Zeile 209, Funktion tbDirect3D::Init)
INFO: Die Initialisierung der Direct3D-Komponente ist abgeschlossen!    (tbdirect3d.cpp, Zeile 274, Funktion tbDirect3D::Init)
INFO: Texturmanager wurde initialisiert!    (tbtexturemanager.cpp, Zeile 43, Funktion tbTextureManager::Init)
INFO: Die DirectInput-Komponente wird initialisiert...  (tbdirectinput.cpp, Zeile 702, Funktion tbDirectInput::Init)
INFO: DirectInput-Schnittstelle wird generiert...   (tbdirectinput.cpp, Zeile 720, Funktion tbDirectInput::Init)
INFO: Initialisierung der Maus komplett!    (tbdirectinput.cpp, Zeile 662, Funktion EnumDevicesCallback)
INFO: Initialisierung der Tastatur komplett!    (tbdirectinput.cpp, Zeile 656, Funktion EnumDevicesCallback)
INFO: Die DirectInput-Komponente wurde erfolgreich initialisiert!   (tbdirectinput.cpp, Zeile 754, Funktion tbDirectInput::Init)
INFO: Die DirectSound-Komponente wird initialisiert...  (tbdirectsound.cpp, Zeile 45, Funktion tbDirectSound::Init)
INFO: DirectSound-Schnittstelle wird generiert...   (tbdirectsound.cpp, Zeile 56, Funktion tbDirectSound::Init)
INFO: Generiere primären Soundpuffer...    (tbdirectsound.cpp, Zeile 67, Funktion tbDirectSound::Init)
INFO: Die DirectSound-Komponente wurde erfolgreich initialisiert!   (tbdirectsound.cpp, Zeile 111, Funktion tbDirectSound::Init)
INFO: Nachrichtenschleife wird betreten...  (tribase.cpp, Zeile 179, Funktion tbDoMessageLoop)
FEHLER: Die angegebene Textur wurde nicht gefunden! (tbtexturemanager.cpp, Zeile 231, Funktion tbTextureManager::ReleaseTexture)


mfg

Werbeanzeige