JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Fehler bei Release?

 
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: 15.04.2004, 20:59    Titel: Fehler bei Release? Antworten mit Zitat

Hi,

bei mir kommt es (manchmal) zu einem Fehler (und dann zum Absturz) wenn ich eine Textur (LPDIRECT3DTEXTURE9) mit ->Release wieder freigebe. Soweit ich weiß werden die Texturen mit new erzeugt und delete wieder gelöscht (mit Create und Release). Nun meine Frage: kann es sein, dass es zu einem Fehler kommen kann, wenn ich eine Textur freigebe die während dem selben schleifendurchlauf auch benutzt wird (zum beispiel mit Sprite->Draw)? Ich hoffe dass man meine Erklärung verstehen kann, ist blöd geschrieben...
_________________
<-- 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: 15.04.2004, 21:08    Titel: Antworten mit Zitat

Wenn ich das jetzt richtig verstanden habe, fürt das auf jeden Fall zu Problemen.
Wenn du die Textur releast, steht sie ja nicht mehr zur Verfügung(d.h. AFAIK ungültiger Zeiger).
Wenn du dann versuchst, darauf zuzugreifen, gibt es logischerweise Zugriffsverletzungen 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: 15.04.2004, 21:38    Titel: Antworten mit Zitat

es ist ja nicht so, dass die textur erst released wird und dann mit sprite->draw drauf zugegriffen wird, ich hab mal ein bild ums nochmal zu verdeutlichen...



das ganze wird natürlich nur einmal ausgeführt nach release wird draw also nicht nochmal ausgeführt...
_________________
<-- 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
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 15.04.2004, 22:07    Titel: Antworten mit Zitat

Mmmh. Weiß ich jetzt auch nicht.
Wenn du ein "Minimal-Beispiel" zur Verfügung stellen könntest, könnten wir dir bestimmt besser helfen. Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 16.04.2004, 05:46    Titel: Antworten mit Zitat

Wenn er beim freigeben der Textur abstürzt:
Hast du auch vorher geprüft, ob der Zeiger auf die Textur = NULL ist, und nah dem freigeben auf NULL gesetzt? Im den Codebeispielen aus dem Buch wurde das immer bei jedem DirectX Objekte gemacht, und ich mach es auch und ich hatte noch nie Probleme.
_________________
https://jonathank.de/games/
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: 16.04.2004, 10:04    Titel: Antworten mit Zitat

Bitte korrigiert mich, wenn ich jetzt falsch liege, aber BeginScene() bereitet doch AFAIK die Szene irgendwie vor.
D.h. höchstwahrscheinlich werden da die Texturen DX irgendwie übergeben oder bereitgestellt.
Da EndScene() das Gegenstück dazu ist, muss die Textur logischerweise noch gültig sein.

Aber ist es denn ein Problem, die Textur erst nach EndScene zu releasen?
_________________
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
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 16.04.2004, 10:21    Titel: Antworten mit Zitat

Ja stimmt. die Textur "released" man erst beim deinitialisieren des Programms.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
fowly
JLI'ler



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

BeitragVerfasst am: 16.04.2004, 18:40    Titel: Antworten mit Zitat

@KI klar, normalerweise wird die textur erst beim beenden des spiels released.

ich wollte aber, um grafikspeicher zu sparen nicht mehr benötigte texturen wieder löschen, zum beispiel vom spielmenü. erst wenn das menü wieder angezeigt wird, werden die texturen wieder hinzugefügt. nur das es da (manchmal) abstürzt... muss man vor dem releasen vielleicht erst endscene() aufrufen?
_________________
<-- 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
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

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

wenn es wircklich daran liegt, das du das zwischen BeginScene() und EndScene() nicht machen darfst:

BeginScene() und EndScene() sollten nicht die komplette Spieleschleife umgeben, sondern nur den Teil, in dem gerendert wird:

Code:

Gameloop()
{

//Verarbeitung der Daten
GetInput();
switch(Status)
{
case 1:
   Menu.Aktion();
case 2:
   Spiel.Aktion;
}

//Rendern der Scene
BeginScene();
switch(Status)
{
case 1:
   Menu.Show();
case 2:
   Spiel.Show();
}
EndScene();
}


So mach ichs. Die Texturen würden dann im Aktion() Teil gelöscht. Dort finden auch alle Berechnungen, Kollsiosnabfrage und alles ander was nicht Render ist statt. In den Render Teil wird wirckloich nur angezeig. Damit sollte es möglich sein die Texturen zu releasen.
Also: Berechnungen und sonstiges aus dem Renderteil raushalten!
_________________
https://jonathank.de/games/
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
Seite 1 von 1

 
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