[DX9] Bool-Wert fehlinterpretiert

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

[DX9] Bool-Wert fehlinterpretiert

Beitrag von Zudomon »

Hallo euch allen!
Ich hatte ein seltsames Verhalten bei meiner Pixelshaderkonstante in meinem Effectfile. Es hat mich einige Stunden gekostet, bis das Problem gelöst war. Bevor jemand auf das gleiche Problem stößt, wollte ich euch darauf hinweisen, vielleicht bleibt dadurch jemand unnötiges suchen ersprarrt.

Das Problem
Ich hatte eine Effectvariable im Effect definiert: bool bUVAtlas;
Der habe ich per Programm dann für jedes Objekt die Variable übergeben. Nun kam es vor, dass sich manchmal die Variable geändert hat. Zuerst dachte ich, ich würde meinen Speicher überschreiben, aber bei der Funktionsübergabe stimmten die Werte noch. Hatte das mit SetBool übergeben und mit GetBool dann wieder zurückgeholt und die Werte waren richtig!

Die Lösung
Im Pixelshader hatte ich die Variable mit "if (bUVAtlas)" abgefragt... die Lösung war dann schlicht: "if (bUVAtlas == true)"
Ob das nun ein Fehler von DX her ist oder vielleicht irgendwie an den Delphi-Headern liegt, weiß ich nicht.

Gruß
Zudo

Edit:
Wenn das Flag D3DXSHADER_PREFER_FLOW_CONTROL gesetzt ist, verhält es sich umgekehrt. Dann wird dieses "==true" fehlinterpretiert und ohne klappt es dann.
Antworten