Problem mit SetTextureStageState
-
Hi!
Ich hab ne Engine geschrieben, die DX kapselt. Das D3D-Objekt besitzt eine Methode SetTSS (Also textureStageState). Die Funktion soll erst testen, ob der zu setzende State nicht schon so gesetzt ist, wie man ihn setzen wil, um doppelte aufrufe von IDirect3DDevice::SetTss zu umgehen. Komsicherweise funktioniert das nur manchaml. Hier der code der funktion:
DLLEXPORT inline meResult SetTextureStageState(DWORD Stage, D3DTEXTURESTAGESTATETYPE t, DWORD Wert) { if(m_TextureStageStates[Stage][t] == Wert) return ME_OK; { m_D3DDevice->SetTextureStageState(Stage, t, Wert); m_TextureStageStates[Stage][t] = Wert; } return ME_OK; };
Wenn ich das if auskommentiere, dann funktioniert alles, was ich machen will. Aber wenn ich das if drin lasse, dann funzt das ganze nicht mehr. Woran kann das liegen? Wenn ich SetTSS aufrufe, und das Flag schon gesetzt ist, dann wäre es doch sinnlos es nochmal aufzurufen, aber anscheinend muss das sein, weil es anscheinend sonst nicht geht...
-
In unserer Ecopoeisis Engine gibt es etwas Ähnliches. Solche Probleme gab es auch lagen aber stets am Code. Ausser zwei Sachen: SetStreamsource ist nach DrawPrimitiveUp nötig und beim Fokusverlust gehen States verloren.
Bye, TGGC \-/