D3D9 RenderStates setzen in einer Schleife



  • Nach einem IDirect3DDevice9::Reset möchte ich die RenderStates wieder setzen, dazu speicher ich alle RenderStates zusätzlich ab in einem DWORD-Array mit 210 Einträgen, da das größte RenderState den Wert 209 hat. So kann ich die RenderStates, als Indizes verwenden in dieses Array.

    Das Problem jedoch ist, dass ich nicht einfach von 0 bis 209 durch dieses Array gehen kann und dessen Inhalt mit SetRenderState den RenderStates zuweisen, da beendet sich die Anwendung.

    Das setzen der einzelnen RenderStates funktioniert jedoch.

    Gibt es nen einfachen Weg, alle RenderStates so zu speichern und zu setzen?
    Möchte nur ungern alle RenderStates von Hand setzen (außer diese, welche keinen echten DWORD-Wert bekommen).



  • Mach ein Array mit allen States, die du setzen willst. Da kannst du dannmit 'ner Schleife drüber.

    Bye, TGGC (Demo or Die)



  • Genau so was habe ich, aber du hast mich gerade auf ne Idee gebracht, ich habe das Array einfach mit 0en gefüllt, jetzt habe ich es allerdings mit den Default-Werten direkt nach der Initialisierung gefüllt und schon funktioniert es 🙂

    Danke TGGC 🙂



  • Auch einen Blick wert: IDirect3DStateBlock9. Speichert sämtliche Zustände des Direct3D-Devices und stellt sie bei Bedarf wieder her (nicht nur Render-States, sondern auch Texture-Stage-States, Sampler-States, Texturen, Materialien, Lichter, Shader, Shader-Konstanten).



  • Danke, das erspart mir natürlich jede Menge Scherereien 🙂


Anmelden zum Antworten