![]() |
Firemonkey Viewport
Hallo,
ich würde gerne über die Matrix in TCanvas den Anzeigebereich von -1..1 in der horizontalen bzw. vertikalen definieren. Hat jemand eine Idee, wie man das am besten macht? Das Problem ist das ich eine D3D Anwendung nach Firemonkey portieren muss und die ganzen Routinen darauf ausgelegt sind. Sprich mache dort ein:
Delphi-Quellcode:
Das hat den Vorteil das ich den Rest einfach über einen derartigen Code realisieren kann:
D3DXMatrixIdentity(matWorld);
Device.SetTransform(D3DTS_WORLD, matWorld); pos_z := -2.4142135675; D3DXMatrixLookAtLH(matView, D3DXVECTOR3(0.0, 0.0, pos_z), D3DXVECTOR3(0.0, 0.0, 5.0), D3DXVECTOR3(0.0, 1.0, 0.0)); Device.SetTransform(D3DTS_VIEW, matView); D3DXMatrixPerspectiveFovLH(matProj, D3DX_PI / 4, 1.0, 1.0, 100.0); Device.SetTransform(D3DTS_PROJECTION, matProj);
Delphi-Quellcode:
sx := RectWidth(control.position) / RectWidth(position);
sy := RectHeight(control.position) / RectHeight(position); ox := -(1 - sx - (control.position.left / (RectWidth(position) / 2))); oy := (1 - sy - (control.position.top / (RectHeight(position) / 2))); Matrices.TranslateLocal(ox, oy, 0.0); Matrices.ScaleLocal(sx, sy, 1.0); Device.SetTransform(D3DTS_WORLD, Matrices.GetTop); |
AW: Firemonkey Viewport
Wir hatten das irgendwo hier vor kurzem diskutiert, dass man an diese Grundfunktionen von OGL und D3D schlecht bei FMX rankommt. Kannst Du nicht die Fenster von FMX und VCL mischen und dann für den D3D-Teil ein VCL-Fenster nutzen?
|
AW: Firemonkey Viewport
Ein etwas unscharfer Beitrag von mir:
Vielleicht hilft die Scale-Komponente weiter? Ich habe mich damit aber noch nicht weiter befasst. Aber im Prinzip sollte die doch für so etwas da sein...? |
AW: Firemonkey Viewport
Danke, da müsste ich mal schaun. Im Prinzip gibt es bei dem Code keinerlei Rotationen von Elementen, so dass ich auch das nicht zwingend über die Matrix im Canvas machen muss.
Ich habe mir eine Helperklasse geschrieben die sich um das eigentliche Rendern kümmert und jetzt fehlt eigentlich nur noch etwas wie
Delphi-Quellcode:
bzw.
function Vector2Transform(const V: TVector; const M: TMatrix): TVector;
begin end;
Delphi-Quellcode:
Das letzte mal das ich mich damit beschäftigt habe ist Jahre her, vielleicht steht ja jemand von euch im Stoff?
function RectTransform(const R: TRectF; const M: TMatrix): TRectF;
begin end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz