Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.12.2003, 16:41

Device->Reset(...) will nicht.

Hallo!
Ich habe ein Problem mit Device->Reset(..); Eigentlich sieht für mein Auge mal wieder alles richtig aus, aber ich bekomme immer eine INVALID_CALL-Exception, sogar wenn ich die D3DPRESENT_PARAMETERS benutze, die ich schon beim CreateDevice(...) erfolgreich angewendet habe;
Dabei ist die Funktion doch wirklich einfach:

Quellcode

1
Device->Reset(&JDX_g_ConfigData.D3Dpp); // in meinem Fall
Hab schon alle möglichen Konfigurationen von D3DPRESENT_PARAMETERS durchprobiert, aber es geht einfach nicht. Hatte hier schoneinmal jemand ähnliche Probleme?

Hier mal der Standard von D3DPRESENT_PARAMETERS, den ich am meisten getestet habe, und die auch bei CreateDevice ohne Probleme funktionieren:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
    JDX_g_ConfigData.D3Dpp.Windowed = FALSE;
    JDX_g_ConfigData.D3Dpp.BackBufferWidth = 640;
    JDX_g_ConfigData.D3Dpp.BackBufferHeight = 480;
    JDX_g_ConfigData.D3Dpp.BackBufferFormat = D3DFMT_R5G6B5;
    JDX_g_ConfigData.D3Dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
    JDX_g_ConfigData.D3Dpp.EnableAutoDepthStencil = TRUE;   
    JDX_g_ConfigData.D3Dpp.AutoDepthStencilFormat = D3DFMT_D16;
    JDX_g_ConfigData.iAdapter   = D3DADAPTER_DEFAULT;
    JDX_g_ConfigData.D3Dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
    JDX_g_ConfigData.D3Dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
JDX_g_ConfigData.D3Dpp.PresentationInterval =D3DPRESENT_INTERVAL_IMMEDIATE;
    

2

18.12.2003, 13:04

Hat sich erledigt. Der Font hat die Probleme verursacht. Sorry für den Spam.

artemis_fowl

Frischling

Beiträge: 13

Wohnort: Detmold

Beruf: Schüler

  • Private Nachricht senden

3

30.01.2004, 17:54

... wie hast du das Problem gelöst? ich habe es auch im Moment...

4

30.01.2004, 18:47

Das Problem bei der Reset-Methode ist, das man alle Interfaces, wie z.B. VertexBuffer und Texturen etc, erst freigeben muss, bevor man die Methode aufruft.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

artemis_fowl

Frischling

Beiträge: 13

Wohnort: Detmold

Beruf: Schüler

  • Private Nachricht senden

5

30.01.2004, 18:53

hmmm.... ich mach gerade ein 2D Spiel und die Texturen der Sprites sind alle im MANAGED_POOL angelegt, in der DXHilfe steht, dass diese nicht freigegeben müssen... geht aber trotzdem nicht :(

6

30.01.2004, 18:57

Das mit dieser Methode ist nicht ganz durchsichtig finde ich. Am besten ist, man fährt einfach alles runter und erstellt ein neues Device. Da sich, falls ich mich jetzt nicht irre, auch bei der Reset-Methode der Pointer auf das IDirect3DDevice Objekt ändert.

Denn alle Interfaces werden eh ungültig nach dem man die Reset-Methode aufgrufen hat und müssen afaik neu erstellt werden. Daher weis ich auch nicht recht warum es diese Methode überhaupt gibt.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

artemis_fowl

Frischling

Beiträge: 13

Wohnort: Detmold

Beruf: Schüler

  • Private Nachricht senden

7

30.01.2004, 19:02

hmmm... gut, dann versuche ich jetzt mal das device zu releasen und dann neu zu erstellen.... danke erstmal, wenns nicht geht, schreib ich nochmal

Werbeanzeige