AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firemonkey Viewport

Ein Thema von Peter666 · begonnen am 14. Mai 2013 · letzter Beitrag vom 14. Mai 2013
Antwort Antwort
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

Firemonkey Viewport

  Alt 14. Mai 2013, 11:44
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:
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);
Das hat den Vorteil das ich den Rest einfach über einen derartigen Code realisieren kann:

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);
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#2

AW: Firemonkey Viewport

  Alt 14. Mai 2013, 14:00
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?
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Firemonkey Viewport

  Alt 14. Mai 2013, 14:30
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...?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#4

AW: Firemonkey Viewport

  Alt 14. Mai 2013, 15:02
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:
function Vector2Transform(const V: TVector; const M: TMatrix): TVector;
begin
end;
bzw.

Delphi-Quellcode:
function RectTransform(const R: TRectF; const M: TMatrix): TRectF;
begin
end;
Das letzte mal das ich mich damit beschäftigt habe ist Jahre her, vielleicht steht ja jemand von euch im Stoff?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz