JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=c1846a3b5f4a14e837a7b4c2cd977801Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Textur löschen
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 10.04.2004, 17:03    Titel: Textur löschen Antworten mit Zitat

Hi,

ich weiß, ich nerve euch schon wieder mit meinen Amateurproblemen, aber ich komme einfach nicht weiter.

Ich habe den ResourceManager aus dem Buch um eine Funktion DeleteTexture(); (Jeder kann sich den Sinn der Funktion mal überlegen) bereichert. Das Problem ist, dass das Programm an der Stelle wo die Funktion aufgerufen wird manchmal abstürzt (nicht immer)

Code:

BOOL CResourceManager::DeleteTexture(LPCSTR lpFileName)
{
   map<string,LPDIRECT3DTEXTURE9>::iterator it;

   it = m_MapTextures.find(lpFileName);
   if(it != m_MapTextures.end())
   {
      (it->second)->Release();
      m_MapTextures.erase(lpFileName);
      return TRUE;
   }

   return FALSE;
}


Sieht einer den Fehler? Meiner Meinung nach sollte alles Funktionieren...
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 10.04.2004, 17:09    Titel: Antworten mit Zitat

Rufst du die Funktion mehrmals irgendwo auf ? Läscht du die Texturen wenn du ein anderes Objekt nutzt (aus versehen ?!)

Wo genau in der Funktion wird der Fehler ausgelöst ?
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 10.04.2004, 18:02    Titel: Antworten mit Zitat

Du könntest, bevor du die Textur löscht, testen, ob die Textur überhaupt existiert.

Das kann nämlich sonst zu einem Absturz führen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 10.04.2004, 18:44    Titel: Antworten mit Zitat

@vision wird das nicht mit

if(it=m_MapTextures.end())

gemach? ich hatte nämlich schon vor, zu überprüfen, ob die textur da ist oder nicht. wenn mein code nicht stimmt, wie sollte es denn heißen?

@fallen ich habe drauf geachtet, dass die texturen nur gelöscht werden wenn sie nicht mehr benutzt werden. außerdem sagt der debugger, dass der fehler im geposteten code steckt...
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 10.04.2004, 19:17    Titel: Antworten mit Zitat

fowly hat Folgendes geschrieben:
@vision wird das nicht mit

if(it!=m_MapTextures.end())

gemach? ich hatte nämlich schon vor, zu überprüfen, ob die textur da ist oder nicht. wenn mein code nicht stimmt, wie sollte es denn heißen?


if(it!=m_MapTextures.end())

sagt, das, wenn der iterator auf ein anderes Element als den Schluss zeigt weitergemacht werden soll. Das muss schon sein. Aber trotzdem fehlt die Abfrage ob die Textur gültig ist. Es müsste also so aussehen:

Code:
BOOL CResourceManager::DeleteTexture(LPCSTR lpFileName)
{
   map<string,LPDIRECT3DTEXTURE9>::iterator it;

   it = m_MapTextures.find(lpFileName);
   if(it != m_MapTextures.end())
   {
      if((it->second))
      {
         (it->second)->Release();
         m_MapTextures.erase(lpFileName);
         return TRUE;
      }
   }

   return FALSE;
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HotAcid
Super JLI'ler


Alter: 43
Anmeldedatum: 04.08.2002
Beiträge: 372
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 10.04.2004, 19:59    Titel: Antworten mit Zitat

Die Methode "find" zeigt auf "end", wenn das Element NICHT enthalten ist. Der Iterator "end" zeigt nämlich NICHT auf das letzte Element, sondern HINTER das letzte Element.

cu Felix
_________________
StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 10.04.2004, 20:16    Titel: Antworten mit Zitat

oder so Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 10.04.2004, 21:15    Titel: Antworten mit Zitat

@vision ich werde deine ergänzung gleich einbauen. mal sehen, aber eigentlich sollte die textur sowieso nur einmal gelöscht werden. wenns also trotzdem nicht geht, werdet ihr bald wieder von mir hören... Wink
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 11.04.2004, 12:10    Titel: Antworten mit Zitat

also... es klappt immer noch nicht Sad

und kommischerweise zeit mir der .net debugger den fehler in folgender zeile:

Code:

it = m_MapTextures.find(lpFileName);


wo soll denn da ein fehler sein bzw. entstehen können ?
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 11.04.2004, 12:18    Titel: Antworten mit Zitat

Was für einen Fehler zeigt er denn an?
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 11.04.2004, 12:21    Titel: Antworten mit Zitat

.net sagt an der stellt immer

Zitat:

Unbehandelte Ausnahme bei 0x00403c7b in Grabbe-Game.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x0006002d.


Crying or Very sad
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 11.04.2004, 12:27    Titel: Antworten mit Zitat

Vielleicht konnte die Textur in der Map nicht gefunden werden und so kann der Iterator auch net initialisiert werden.
Da kann ja der Debugger/Computer nicht einfach irgendeinen Wert übergeben Wink
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 11.04.2004, 12:29    Titel: Antworten mit Zitat

aber wenn die textur nicht gefunden wurde sollte im iterator "m_MapTextures.end();" stehen...
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 11.04.2004, 12:32    Titel: Antworten mit Zitat

und was steht drin?
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 11.04.2004, 12:33    Titel: Antworten mit Zitat

keine ahnung, das programm stürzt an der stelle ja immer ab... der inhalt kann nie gelesen werden
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum