Topenglpanel -

Topenglpanel -

type TMyOpenGLPanel = class(TOpenGLPanel) private FAngle: Single; FTimer: TTimer; procedure OnTimer(Sender: TObject); protected procedure Paint; override; procedure Resize; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure StartAnimation; procedure StopAnimation; end;

procedure TMyOpenGLPanel.Paint; var ModelMat, ViewMat, ProjMat: TMatrix; Center: TPoint3D; i: Integer; begin inherited; if not Assigned(Context) then Exit; TOpenGlPanel

procedure TMyOpenGLPanel.Resize; begin inherited; if Assigned(Context) then Context.SetViewport(RectF(0, 0, Width, Height)); end; procedure OnTimer(Sender: TObject)

uses System.UITypes, FMX.Graphics, System.Math; protected procedure Paint

// Setup matrices ModelMat := TMatrix.Identity; ModelMat := ModelMat * TMatrix.CreateRotationY(DegToRad(FAngle)); ModelMat := ModelMat * TMatrix.CreateRotationX(DegToRad(FAngle * 0.7));

// Each face: two triangles (4 vertices) Context.DrawCubeFace(i, 1.0); // Custom helper (see below) end; end;