9
LCLIntf, LCLType, SysUtils, Variants, Classes, Graphics, Controls, Forms,
10
Dialogs, GLScene, GLGraph, GLObjects, GLAsyncTimer, GLLCLViewer,
12
GLTexture, GLVectorTypes, GLCadencer, StdCtrls, ExtCtrls,
13
GLCoordinates, GLCrossPlatform, GLBaseClasses;
17
GLSceneViewer1: TGLSceneViewer;
19
GLAsyncTimer1: TGLAsyncTimer;
21
GLDummyCube1: TGLDummyCube;
22
GLLightSource1: TGLLightSource;
23
GLHeightField1: TGLHeightField;
26
procedure FormCreate(Sender: TObject);
27
procedure GLHeightField1GetHeight(const x, y: Single; var z: Single;
28
var color: TVector4f; var texPoint: TTexPoint);
29
procedure AsyncTimer1Timer(Sender: TObject);
30
procedure Button1Click(Sender: TObject);
32
{ Private declarations }
34
{ Public declarations }
35
t, w, v, pi, frq, gz, aX: Single;
48
procedure TForm4.FormCreate(Sender: TObject);
50
GLHeightField1.Material.Texture.Image.LoadFromFile
51
(ExtractFilePath(Application.ExeName) + 'OPOCEAN2.JPG');
52
GLHeightField1.StructureChanged;
60
procedure TForm4.GLHeightField1GetHeight(const x, y: Single; var z: Single;
61
var color: TVector4f; var texPoint: TTexPoint);
63
z := VectorNorm(x, y);
64
z := sin((w * t + y) - (z / frq)) + x / 2;
69
procedure TForm4.AsyncTimer1Timer(Sender: TObject);
72
GLHeightField1.StructureChanged;
73
GLCube1.Position.y := sin(w * t);
74
GLCube1.PitchAngle := RadToDeg(-gz);
75
GLCube1.TurnAngle := -aX * w;
76
GLCube1.RollAngle := -aX * w;
79
procedure TForm4.Button1Click(Sender: TObject);
81
GLAsyncTimer1.Enabled := False;
82
Application.ProcessMessages;