Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 26.06.2006, 19:11 Titel: Lost Device ? |
|
|
Hey,
ich arbeite mit:
CPP: | LPDIRECT3D9 m_lpD3D;
LPDIRECT3DDEVICE9 m_lpD3DDevice;
|
Wie man rausbekommt, ob die Device verloren ist geht ja recht bequem mit TestCooperativeLevel(), aber wenn man die Device mal verloren hat, was dann oO ?
Habe es lange mit m_lpD3DDevice->reset() versucht, ist aber erfolglos ;(
Was annährend funktioniert wäre ein komplett neues Direct3D + Device -Objekt neu zu erzeigen, aber das Gelbe vom Ei kann das nicht sein!
Umgesetzt hat das doch bestimmt schonmal jemand oder ? _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 37 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 26.06.2006, 19:56 Titel: |
|
|
Soweit ich weiß (nur einmal umgesetzt, unter DD), ist es tatsächlich die beste Möglichkeit, beim Device-Lost alles frei zugeben und neu zu initialisieren. Gilt auch für Texturen etc. |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 26.06.2006, 20:14 Titel: |
|
|
Jopp so ist es, gibt zwar einige Ausnahmefälle in dem man nicht alles neu erzeugen muss (unmanaged Daten), aber neu erzeugen muss man dennoch das meiste.
Die neusten DXSamples sollten da einiges gut darstellen können. AFAIK sind dazu gute Kommentare welche da Problem und die Vorgehensweise beschreiben. _________________ "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 |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 26.06.2006, 21:28 Titel: |
|
|
Ahhh .. *phui* ;(
Heißt also:
Device und D3D-Objekt löschen, neu erstellen, und die neuen Zeiger einmal um die Welt (an jedes referenzierte Objekt) übermitteln ...
Hmmm mal sehen, wie sich das am günstigsten realisieren lässt ...
Bis denne, und gute Nacht _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 30.06.2006, 18:31 Titel: |
|
|
Ja, im Prinzip geht das so, ich habs so gemacht, dass jede Klasse die irgendwas reinitialisieren muss, eine Funktion ReInit hat, die halt das neue Device erwartet und damit alle Ressourcen entsprechend neu lädt. Geht damit eigentlich recht einfach, wenn du einen Texturmanager hast, erspart der dir zum Beipsiel schon mal ne Menge arbeit, weil der dann ja alle Texturen neu laden kann. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 30.06.2006, 19:34 Titel: |
|
|
Genau so in der Art wie es Jonathan meint würde ich es auch tun und jedem ans Herz legen. (Hey Jonathan irgendwie laufen wir uns jezz in jedem Thread über den Weg ^^)
Halt am besten die DirectX Sachen in eine eigene Klasse oder ähnliches Kapseln, so das du im Falle eines resets nur das DirectX Objekt freigeben brauchst und mit den Restlichen konsistenten Daten aus deiner Kapselung es wieder herstellen kannst. _________________ "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 |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 02.07.2006, 11:17 Titel: |
|
|
(Späte Antwort, weil ich verreist war)
Ok
Sollte eigendlich nicht schwr zu realisieren sein, da ich sowohl einen Texturmanager als auch einen DirectXManager gebaut habe.
Schade das DirectX da nicht mehr kann ;(
Danke Leutz _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
|