Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

[DirectX 9] 2D Transformationsmatrix ist an X Achse gespiegelt

  Alt 20. Jan 2014, 15:41
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 MSDN-Library durchsuchenD3DXMatrixRotationX 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
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (20. Jan 2014 um 15:47 Uhr)
  Mit Zitat antworten Zitat