Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Luinechor Mini JLI'ler
Alter: 32 Anmeldedatum: 20.03.2008 Beiträge: 5
Medaillen: Keine
|
Verfasst am: 20.03.2008, 15:02 Titel: DirectX Problem - Stürzt beim Starten ab |
|
|
Hi, ich bin gerade am Lernen mit DirectX umzugehen und stoße auch auf viele Probleme. Ich konnte zwar viele alleine lösen, doch jetzt verharre ich seit geraumer Zeit bei einem Problem.
Das Spiel soll ein kleiner Space-Shooter werden, allerdings ist das erstmal unrelevant.
Ich habe die viel von den Klassen aus dem im Titel-stehenden Buch genommen.
Dazu habe ich noch 2 andere Klassen.
die cGame und die cPlayer Klasse (im Beispielprojekt befindet sich noch eine nicht fertige cShot Klasse...)
Das Problem ist, dass ich beim Initialisieren des Spielers, genauer gesagt der Ressourcen ein Problem bekomme.
Die Funktion:
CPP: | int cPlayer::Init(cDirect3D *Direct3D, cAudio *Audio, cResourceManager *ResourceManager)
{
//////////////////////////////////////////////////////////////
m_pDirect3D = Direct3D;
m_pAudio = Audio;
m_pResourceManager = ResourceManager;
m_pSpritePlayer = new cSprite;
m_pSpritePlayer->Create(m_pDirect3D->GetDevice(), m_pResourceManager, 3);
m_pSpritePlayer->SetSpeed(600.0f, 600.0f);
m_pSpritePlayer->SetPosition(50, 50);
// Wenn dies aufgerufen wird, findet der Fehler statt. Allerdings erst beim Beenden
// m_pResourceManager->AddTexture("Sprites/Player/Player1.png");
// m_pResourceManager->AddTexture("Sprites/Player/Player2.png");
// m_pResourceManager->AddTexture("Sprites/Player/Player3.png");
// Sofern dies danach ausgeführt wird, stürzt das Spiel gleich beim Start ab!
// m_pSpritePlayer->AddTexture(m_pResourceManager->GetTexture("Sprites/Player/Player1.png"));
// m_pSpritePlayer->AddTexture(m_pResourceManager->GetTexture("Sprites/Player/Player2.png"));
// m_pSpritePlayer->AddTexture(m_pResourceManager->GetTexture("Sprites/Player/Player3.png"));
/////////////////////////////////////////////////////////////
return 0;
} |
Hoffe ihr versteht es und könnt mir helfen.
EDIT: Ich denke, es hat was mit dem Speicher zu tun, dass der nicht richtig reserviert wird. Wenn ich keine Klasse erstelle (also keine cGame Klasse) funktioniert es übrigens (bis auf das Zeichnen, >.<)
Zuletzt bearbeitet von Luinechor am 22.03.2008, 16:32, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Luinechor Mini JLI'ler
Alter: 32 Anmeldedatum: 20.03.2008 Beiträge: 5
Medaillen: Keine
|
Verfasst am: 21.03.2008, 18:53 Titel: |
|
|
So, hab das ganze nun anders probiert. Ungefähr so, wie es auch ebi dem Asteroid-Spiel im Buch gemacht wird. Allerdings habe ich das Problem, dass das Programm beim Zeichnen des Spielers abstürzt.
Also bei ~ Player.Draw();
Hoffe einer könnte da mal drüber schauen.
-> http://rapidshare.com/files/101297228/DirectXProb.rar.html <-
Das ist nämlich so mein einziges Problem, wenn das mal gelöst wäre, würde ich schnellstens Pong programmieren. (Hab ich schon mal mit Direct Draw programmiert) |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.03.2008, 16:04 Titel: |
|
|
Hast du vielleicht ein paar mehr Informationen zum Fehler?
Welcher? Wo genau? Wie sieht die entsprechende Codezeile aus? Hast du mal debuggt? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Luinechor Mini JLI'ler
Alter: 32 Anmeldedatum: 20.03.2008 Beiträge: 5
Medaillen: Keine
|
Verfasst am: 22.03.2008, 16:11 Titel: |
|
|
Es ist kein Syntaxfehler, das Programm stürzt einfach ab. Von daher kann ich nicht sagen wo genau und wie die Codezeile aussieht (vor allem, da ich auch nicht debuggt habe. Der Debugger will bei mir nicht klappen. Ich benutze als Compiler den Visual 2008 compiler.) |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.03.2008, 16:18 Titel: |
|
|
Inwiefern klappt der Debugger nicht?
Wie sieht der Fehler aus? Bluescreen? Eingefroren? Neustart? Fehlermeldung (deren Inhalt?)? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Luinechor Mini JLI'ler
Alter: 32 Anmeldedatum: 20.03.2008 Beiträge: 5
Medaillen: Keine
|
Verfasst am: 22.03.2008, 16:28 Titel: |
|
|
Bei CodeBlocks hatte er mir, wenn ich den Debugger anwerfen wollte nur das Programm ausgeführt, ist dann abgestürzt und das wars. So wie in dem Buch klappt es jedenfalls nicht.
Ich habe das Projekt jetzt in Visual C++ EE 2008 erstellt und lasse dort mal den Debugger laufen, wenn ich was neues rausfinde sag ich bescheid.
Der Fehler: "Game.exe hat einen Fehler festgestellt und muss beendet werden..."
Kann man das irgendwie umstellen? Als ich das letzte Programm einen Freund schickte (gleicher Fehler), dann hatte er nämlich einen Fehler mit "Memory..." entgegengeschmissen bekommen.
Update:
"Unbehandelte Ausnahme bei 0x0043a493 in Game.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000."
Zeile: m_lpSprite->Begin(D3DXSPRITE_ALPHABLEND); |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.03.2008, 16:37 Titel: |
|
|
Der Zeiger lpSprite ist nicht korrekt initialisiert, würde ich behaupten.
Evtl. hatte eine Load Methode einen Fehler und deshalb NULL zurück gegeben. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Luinechor Mini JLI'ler
Alter: 32 Anmeldedatum: 20.03.2008 Beiträge: 5
Medaillen: Keine
|
Verfasst am: 22.03.2008, 16:54 Titel: |
|
|
Oh Gott, die Funktion "PlayerInit" wurde gar nicht ausgeführt. Deswegen war m_lpSprite natürlich NULL und das Zeichnen hatte auch nicht geklappt.
Das mir das nicht aufgefallen ist. Fehler macht man... -.-
Nächstes mal kontrollier ich erstmal, ob die FUnktion überhaupt ausgeführt wird. |
|
Nach oben |
|
|
|