Hallo zusammen,
ich habe bisher mit D3DFVF_XYZRHW Vertices 2-dimensionale Figuren auf ein
DirectX Surface gezeichnet. Hierbei sind die X und Y Koordinaten bereits transformiert und der Ursprung liegt wie gewohnt bei (0, 0) in der oberen linken Ecke.
Jetzt würde ich gerne die Skalierung und Rotation von Objekten ändern und kann muss deshalb auf D3DFVF_XYZ umsteigen. Mit folgendem Code habe ich versucht die entsprechenden Transformationsmatrizen so zu setzen, dass der Ursprung wieder in der oberen linken Ecke liegt:
Delphi-Quellcode:
procedure TForm7.SetMatrix;
var
matOrtho2D,
matIdentity: TD3DXMatrix;
begin
D3DXMatrixOrthoOffCenterLH(matOrtho2D, 0, ClientRect.Right, 0, ClientRect.Bottom, 0.0, 1.0);
D3DXMatrixIdentity(matIdentity);
FDevice.SetTransform(D3DTS_PROJECTION, matOrtho2D);
FDevice.SetTransform(D3DTS_WORLD, matIdentity);
FDevice.SetTransform(D3DTS_VIEW, matIdentity);
end;
Obige Transformation setzt den Ursprung allerdings aus irgendeinem Grund an die
untere linke Ecke. Meine Versuche mit
D3DXMatrixRotationX blieben leider erfolglos (mein Rechteck erscheint gar nicht mehr auf dem Bildschirm). Quelle:
http://stackoverflow.com/questions/1...s-in-directx-9
Hat jemand eine Idee, wie ich das beheben kann?
Viele Grüße
Zacherl