type
TForm1 = class(TForm3D)
procedure Form1Render(Sender: TObject; const Context: TContext3D);
procedure Timer1(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses
System.Math.Vectors;
{ TForm1 }
procedure TForm1.Form1Render(Sender: TObject; const Context: TContext3D);
var
Ver: TVertexBuffer;
Idx: TIndexBuffer;
Mat: TColorMaterial ;
x: Integer;
const
ci = 1000000;
begin
// Set Vertices
Ver := TVertexBuffer.Create([TVertexFormat.Vertex], ci);
for x := 0 to (ci div 2)-1 do
begin
Ver.Vertices[x*2] := Point3D(-x, x, x*2);
Ver.Vertices[x*2+1] := Point3D( x, x, x*2);
end;
// Set Indices
Idx := TIndexBuffer.Create(ci);
for x := 0 to ci-1 do
Idx[x] := x;
// Set matrix
Context.SetMatrix(TMatrix3D.CreateRotation(Point3D(1,0,0), DegToRad(Tag)));
// Set states
// Context.SetContextState(TContextState.csAllFace);
// Create material
Mat := TColorMaterial.Create;
mat.Color := TAlphaColorRec.Green;
// render
context.DrawLines(ver, idx, mat, 1);
Mat.Free;
Ver.Free;
Idx.Free;
end;
procedure TForm1.Timer1(Sender: TObject);
begin
Tag := Tag + 1;
Invalidate;
end;
DFM:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'FireMonkey Low-Level 3D Example'
Color = xFF284A5E
ClientHeight = 412
ClientWidth = 320
FormFactor.Width = 2077
FormFactor.Height = 1273
FormFactor.Devices = [Desktop]
OnRender = Form1Render
DesignerMasterStyle = 0
object Timer1: TTimer
Interval = 33
OnTimer = Timer1
end
end