2010-12-29 5 views
1

In Direct3D 9, ich versuche so eine Oberfläche zu modifizieren:Verdunklungs Teil einer Oberfläche in Direct3D 9

Bei einem Rechteck, für jedes der Pixel in der gegebenen Fläche innerhalb der Grenzen des Rechtecks, die jeweils die Kanäle (R, G, B, A) würden mit einem bestimmten (float) Wert multipliziert, um sie entweder abzuschwächen oder zu erhellen.

Wie würde ich das machen? Vorzugsweise möchte ich LockRect vermeiden (besonders, da es anscheinend nicht mit dem Standard-Pool funktioniert).

+1

Können Sie genauer sein? Was ist der Ursprung der Oberfläche? Benutzt du es als Textur? Wie oft wird diese Änderung benötigt? Jeder Rahmen? – Virne

Antwort

1

Wenn Sie Oberflächenpixel direkt aktualisieren möchten, können Sie "Device.UpdateTexture" verwenden. Dadurch wird eine in Pool.SystemMemory erstellte Textur in eine in Pool.Default erstellte Textur aktualisiert.

Aber das klingt nicht wie das, was Sie tun möchten. Verwenden Sie einen Effekt, um die Hardware zu beschleunigen. Wenn du wissen möchtest, wie ich es dir zeigen kann.

+0

Danke, ich habe es geschafft, herauszufinden, wie man mit einem Effekt zur Arbeit kommt – Jamie

Verwandte Themen