AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

FMX:OpenGL-Panel oder Layout in 2D Formular

Ein Thema von luisk · begonnen am 1. Jul 2016 · letzter Beitrag vom 6. Jul 2016
Antwort Antwort
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#1

FMX:OpenGL-Panel oder Layout in 2D Formular

  Alt 1. Jul 2016, 18:39
Hallo,
Wie kann ich unter FMX ein 3D-Panel oder Layout in ein 2D Formular einbetten ?
Ich möchte eine Opengl-Anwendung nach FMX portieren.

Geändert von luisk ( 2. Jul 2016 um 14:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
486 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: FMX: 3D-Panel oder Layout in 2D Formular

  Alt 1. Jul 2016, 20:29
Hallo,
Wie kann ich unter FMX ein 3D-Panel oder Layout in ein 2D Formular einbetten ?
Ich möchte eine Opengl-Anwendung nach FMX portieren.
Hi,

auf einem Firemonkey HD Formular kannst du eine Delphi-Referenz durchsuchenTViewport3D Komponente setzen und dann sogar über den Formular-Designer damit 3D Objekte einsetzen, bewegen usw.
Bei mir hat sich Delphi jedoch oft aufgehanden und ist dann abgestürzt, direkt bei 3D Formularen klappt es jedoch ohne abstürze.

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
CHackbart

Registriert seit: 22. Okt 2012
217 Beiträge
 
#3

AW: FMX: 3D-Panel oder Layout in 2D Formular

  Alt 1. Jul 2016, 20:42
Das würde ich ehrlich gesagt nicht empfehlen. TViewport3D rendert in ein Bitmap und das wird dann angezeigt. Guck dir mal TCustomContextOpenGL.DoCopyToBitmap an. Das ist grottenlangsam. Besser du nimmst gleich ein Form3D und packst die 2D Anzeige in einen Layer.
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
486 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: FMX: 3D-Panel oder Layout in 2D Formular

  Alt 1. Jul 2016, 20:47
Das würde ich ehrlich gesagt nicht empfehlen. TViewport3D rendert in ein Bitmap und das wird dann angezeigt. Guck dir mal TCustomContextOpenGL.DoCopyToBitmap an. Das ist grottenlangsam. Besser du nimmst gleich ein Form3D und packst die 2D Anzeige in einen Layer.
Würde ich auch empfehlen wenn es sich primär um eine 3D Anwendung handelt.

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#5

AW: FMX:OpenGL-Panel oder Layout in 2D Formular

  Alt 2. Jul 2016, 14:30
kann ich auch reine OpenGL-Panel anlegen, so wie bei VCL ?
Sowas bräuchte ich.
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
486 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: FMX:OpenGL-Panel oder Layout in 2D Formular

  Alt 2. Jul 2016, 15:20
kann ich auch reine OpenGL-Panel anlegen, so wie bei VCL ?
Sowas bräuchte ich.
Soweit ich weiss geht das leider nicht ohne weiteres... Für Android und iOS kannst du OpenGL ES einsetzen, Infos dazu kriegst du hier. Getestet habe ich das selber nicht sollte aber funktionieren.

Wie es mit Windows und Mac aussieht kann ich dir nicht sagen, habe aber gelesen das es nicht einfach (vielleicht auch unmöglich) sein soll Firemonkey dazu zu überreden ein eigenes OpenGL context zu erstellen. Wenn ich den Link dazu noch finde editiere ich ihn rein.

Freundliche Grüsse

Edit: Hier der Link
Milos
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
594 Beiträge
 
#7

AW: FMX:OpenGL-Panel oder Layout in 2D Formular

  Alt 2. Jul 2016, 15:55
Ich kann es Dir nicht genau sagen, aber bei GLScene funktioniert es wohl. Dort gibt es eine Unit "GLScene.FMX.Viewer". Es wird wohl irgendwie ein Kontext erzeugt.
Vlt hilft Dir das ja weiter.

P.S.: Wenn Du es geschafft hast, dann bitte eine Rückmeldung.

Hier noch ein Link.
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 ( 2. Jul 2016 um 16:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#8

AW: FMX:OpenGL-Panel oder Layout in 2D Formular

  Alt 2. Jul 2016, 22:29
Hallo Milos, Hallo Jens01 so gehts z.B.:
1.Dieses VCL-Panel FMX-Adapter einbinden
http://alex-ai.blogspot.de/2013/11/h...iremonkey.html
Delphi-Quellcode:
unit FMXAdapter;
 
interface
 
uses
  FMX.Forms,
  Vcl.ExtCtrls;
 
type
  TFMX_Adapter_Panel = class(Vcl.ExtCtrls.TPanel)
  private
    FForm: TCommonCustomForm;
    procedure ResizeForm;
    procedure SetForm(const AForm: TCommonCustomForm);
  protected
    procedure Resize; override;
  public
    property Form: TCommonCustomForm read FForm write SetForm;
  end;
 
implementation
 
uses
  Types,
  Winapi.Windows, System.SysUtils,
  FMX.Platform.Win;
 
 
{ TFMX_Adapter_Panel }
 
procedure TFMX_Adapter_Panel.Resize;
begin
  inherited;
  ResizeForm();
end;
 
procedure TFMX_Adapter_Panel.ResizeForm;
begin
  if Assigned(FForm) then begin
    FForm.SetBounds(BorderWidth, BorderWidth, ClientWidth + BorderWidth, ClientHeight + BorderWidth);
  end;
end;
 
procedure TFMX_Adapter_Panel.SetForm(const AForm: TCommonCustomForm);
begin
  FForm := AForm;
  FForm.BorderIcons := [];
  FForm.BorderStyle := TFmxFormBorderStyle.bsNone;
  FForm.Visible := True;
  Winapi.Windows.SetParent( FmxHandleToHWND(FForm.Handle),Handle );
  FForm.Left:=0;
  FForm.Top:=0;
  FForm.Width:=width;
  FForm.Height:=height;
  ResizeForm();
end;
 
end.

2. und in einem FMX-Fenster plazieren über:
 FMX_Adapter_Panel.ParentWindow := FormToHWND( Self );

3. Ein weiteres FMX-Fenster FMX_Render_Form in diesem
FMX_Adapter_Panel plazieren über:
FMX_Adapter_Panel.Form:=FMX_Render_Form;
// SetForm gegenüber dem Link geändert, damit sich das Form sauber im Panel plaziert.

4. Dann kannst Du Dein Bsp. drinnen laufen lassen, indem Du Dein FMX_Render_Form übergibst:
http://esv.cocolog-nifty.com/blog/opengl/index.html
http://escargot.la.coocan.jp/SimpleS...OpenGL_FMX.pas

Ich hab auch versucht in das VCL-Panel zu rendern. Es tat sich aber nichts.
Beim FMX-Form im VCL-Panel geht es.

Die Frage ist: Wie läuft das Ganze unter Android, wenn man bei diesem Weg ein VCL-Panel als Container nehmen muss ?

Man kann auch ein FMX-Form in ein anderes legen über
 Winapi.Windows.SetParent( FmxHandleToHWND(Form_x.Handle),FmxHandleToHWND(Handle) ); doch wenn man den Rahmen und die Icons wegnimmt geht es nicht mehr - seltsam.

Embarcadero könnte da mal was passendes liefern.

Geändert von luisk ( 3. Jul 2016 um 07:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#9

AW: FMX:OpenGL-Panel oder Layout in 2D Formular

  Alt 6. Jul 2016, 08:47
das funktioniert leider nur unter Windows.
Gibt es für Android auch eine Lösung ?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf