DX8: Textur locken, Pixelfarbe bestimmen
-
Hi
Ich programmiere gerade eine pixelgenaue Kollisionsabfrage für 2D-Sprites in DirectX8. Jetzt muss ich aber irgendwie von einer Textur die Pixelfarbe checken
Ich hab bis jetzt mit:D3DLOCKED_RECT * data = new D3DLOCKED_RECT; IDirect3DTexture8->LockRect(0, NULL, data, 0);
mir einen Zeiger auf das gelockte Rect geholt. Wie kann ich jetzt von der textur einzelne Pixel (mit X und Y Koordinaten) auslesen?
Daniel
-
DanielD schrieb:
Wie kann ich jetzt von der textur einzelne Pixel (mit X und Y Koordinaten) auslesen?
It depends.
Ich würde das aber sowieso lassen und mit Rechtecken und/oder Kreisen arbeiten.
Bye, TGGC \-/
-
Und wovon hängts ab? Also das Pixelformat der geladenen Surfaces ist entweder (jeweils 1 Byte) [Alpha Red Green Blue] oder nur [Red Green Blue].
Wenn ich die Kollisionsabfrage mit Rects und Kreisen mache, ist das nicht ein bisschen zu aufwändig? Man muss erst die ganzen Kreise oder Rechtecke definieren und ganz genau wirds so nie (ohne 500 Kreise oder so)An der Geschwindigkeit sollte es eigentlich auch nicht liegen. Bei DirectDraw7 ging es ziemlich flott, also würde ich es bei DX8 auch so machen.
Daniel
-
Was die Daten in der D3DLOCKED_RECT Struktur bedeuten, findest du in der DXSDK Doku. Bedenke auch, das du so nicht Pixel aus der Textur, sondern lediglich einem Mip Level hast. Und viel genauer wird es so auch bloss nicht, ausser du verschiebst jedes Objekt einzeln und jeweils um nur einen Pixel weit und verzichtest komplett auf Rotation und Skalierung.
Bye, TGGC \-/