JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Ich glaube ich werde verrückt...

 
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: 07.09.2004, 19:45    Titel: Ich glaube ich werde verrückt... Antworten mit Zitat

Ich glaube einige kennen das Problem: m_lpD3DDevice->RESET();


( SORRY KEIN CODE, ERST MORGEN... )

Ich rufe es immer auf, wenn nach Device->Present rauskommt dass das Device Verloren wurde, also zum Beispiel wenn die Anwendung minimiert wurde. ALLE TEXTUREN SIND IM MANAGED-POOL ANGELEGT... Also brauchen diese nicht gelöscht zu werden. Also WARUM???? kommt bei mir immer "Invalid Call"???

Ich hatte es bislang immer so, dass ich, wenn das Device mal wieder weg war das alte gelöscht und ein neues erstellt habe (und alle texturen neu geladen usw.). komischerweise geht das ganze nur so um die sieben mal, danach kommt auch bei der CreateDevice() Methode ein "Invalid Call". Weiß jemand ob man ein Device nur begrenzt oft in einer Anwendung erstellen kann? Wäre doch eigentlich unsinnig... Und, wie kann man das ändern?

Wenn mir einer die erste oder die zweite Frage beantworten kann wäre ich überglückglich...
_________________
<-- 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
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 07.09.2004, 20:04    Titel: Antworten mit Zitat

Das Device kann sich in einem Zustand befinden, in dem es noch nicht wieder hergestellt werden kann. Schau mal in der Hilfe zu: TestCooperativeLevel();


while(D3DERR_DEVICELOST == TestCooperativeLevel())
{
Sleep(1000);
}

Reset();

C.
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: 08.09.2004, 17:13    Titel: Antworten mit Zitat

Ja, ich frage ja immer mit Device->TestCooperativeLevel(); obs dann auch auf D3DERR_DeviceNotReset steht...

ich hab mal das SpriteBounce Beispiel (Kap 22) aus dem Buch umgeschrieben und die Reset Methode eingebaut (siehe Direct3D.cpp, EndScene() Funktion)

http://www.uranus-entertainment.de/Reset%20Sample.rar

ich hoffe ihr könnt mir helfen...
_________________
<-- 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: 09.09.2004, 13:04    Titel: Antworten mit Zitat

*push*

kann mir keiner helfen? hat sich einer schonmal das beispielprog. gezogen (nur so 300 kb) und kann mir sagen obs bei ihm auch nicht klappt, oder doch?
_________________
<-- 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
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 10.09.2004, 20:20    Titel: Antworten mit Zitat

Aus meinem Huge Book alike Tutorial:

Zitat:
Verlieren des Devices
Normalerweise läuft alles korrekt, alles funktioniert super. Grafik wird gezeichnet, Speicherresourcen werden im Speicher behalten. Doch es kann passieren, dass das Device verloren wird.

Das kann daran liegen, dass eine andere Anwendung die Kontrolle an sich gerissen hat und den ganzen Speicherbereich verworfen hat (alle 0 und 1 anders angeordnet hat, argh das reinste Chaos!!), das alle Grafikdaten von deiner Anwendung enthalten hat. Aber das lassen wir uns nicht gefallen und fordern es zurück!

Nun wie stellt man fest, dass es überhaupt verloren wurde? Einfach indem man die Rückgabewerte überprüft. Wenn wir später Grafik darstellen werden und von der Funktion die wir benutzen den Rückgabewert überprüfen. Sollte dieser D3DERR_DEVICELOST zurückgeben ist das was wir befürchtet haben eingetreten.

Die Kontrolle wiederzuerlangen ist leichter getan als gesagt!

HRESULT IDirect3DDevice9::Reset(
D3DPRESENT_PARAMETERS *pPresentationParameters);

Der einzige Parameter der übergeben wird ist die Presentation Struktur die wir schon übergeben haben, als wir das Device erstellt haben:

// g_pD3DDevice = pre-initialized Device Objekt
// d3dpp = pre-setup Presentation Struktur
g_pD3DDevice->Reset(&d3dpp);

Dies ist eine Zauberfunktion das sie alles nötige tut um das Device wiederherrzustellen. Sie löscht aber auch alle Ressourcen, was aber gar nicht so schlimm ist, das diese wahrscheinlich als das Device verloren wurde schon längst wegwaren. Auf jeden Fall musst du alle Ressourcen neuladen und auch die Device States.


Der Managed 3D Pool verwaltet nur die Daten, aber wenn sie weg sind sind sie weg AFAIK...bitte korrigiert mich falls nötig
_________________
The source of all power is in its destiny...
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: 11.09.2004, 17:38    Titel: Antworten mit Zitat

ja, das hab ich ja auch alles gemacht, aber trotzdem kommt immer invalid call -> siehe mein tolles beispiel...

wenn es bei einem von euch klappt, kann er mir dann nicht irgendwie mal ne kleine anwendung schicken, vielleicht seh ich dann was ich falsch gemacht habe...
_________________
<-- 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
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