123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- unit fTransparency;
- interface
- uses
- Winapi.OpenGL,
- System.SysUtils,
- System.Classes,
- System.Math,
- Vcl.Graphics,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- Vcl.ExtCtrls,
-
- GLS.Scene,
- GLS.Objects,
- Vcl.StdCtrls,
- GLS.Cadencer,
- GLS.Behaviours,
- GLS.Texture,
- GLS.VectorGeometry,
- GLS.SceneViewer,
- GLS.GeomObjects,
- GLS.Coordinates,
-
- GLS.BaseClasses,
- GLS.Material,
- GLS.RenderContextInfo;
- type
- TForm1 = class(TForm)
- GLSceneViewer1: TGLSceneViewer;
- GLScene1: TGLScene;
- GLCamera1: TGLCamera;
- GLLightSource1: TGLLightSource;
- Cone1: TGLCone;
- DCCentral: TGLDummyCube;
- CentralSphere: TGLSphere;
- Torus1: TGLTorus;
- OrbitingSphere1: TGLSphere;
- GLCadencer1: TGLCadencer;
- BaseDummyCube: TGLDummyCube;
- OrbitingSphere2: TGLSphere;
- Panel1: TPanel;
- Label1: TLabel;
- Label2: TLabel;
- RBSTC: TRadioButton;
- RBTSC: TRadioButton;
- RBTCS: TRadioButton;
- Label3: TLabel;
- CBAdditive: TCheckBox;
- CBSorting: TCheckBox;
- procedure RBSTCClick(Sender: TObject);
- procedure RBTSCClick(Sender: TObject);
- procedure RBTCSClick(Sender: TObject);
- procedure CBAdditiveClick(Sender: TObject);
- procedure CBSortingClick(Sender: TObject);
- procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
- newTime: Double);
- private
- //
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.DFM}
- procedure TForm1.RBSTCClick(Sender: TObject);
- begin
- // we have 3 objects, move up twice and we're on the top !
- CentralSphere.MoveUp;
- CentralSphere.MoveUp;
- end;
- procedure TForm1.RBTSCClick(Sender: TObject);
- begin
- // we have 3 objects, move down twice and we're on the top,
- // then once down, we're in the middle !
- CentralSphere.MoveUp;
- CentralSphere.MoveUp;
- CentralSphere.MoveDown;
- end;
- procedure TForm1.RBTCSClick(Sender: TObject);
- begin
- // we have 3 objects, move down twice and we're on the bottom !
- CentralSphere.MoveDown;
- CentralSphere.MoveDown;
- end;
- procedure TForm1.CBAdditiveClick(Sender: TObject);
- begin
- // adjust blending mode for both orbiting spheres
- if CBAdditive.Checked then
- OrbitingSphere1.Material.BlendingMode:=bmAdditive
- else OrbitingSphere1.Material.BlendingMode:=bmTransparency;
- OrbitingSphere2.Material.BlendingMode:=OrbitingSphere1.Material.BlendingMode;
- end;
- procedure TForm1.CBSortingClick(Sender: TObject);
- begin
- // adjust sorting on the parent object
- if CBSorting.Checked then
- BaseDummyCube.ObjectsSorting:=osRenderFarthestFirst
- else BaseDummyCube.ObjectsSorting:=osNone;
- end;
- procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime,
- newTime: Double);
- var
- alpha : Double;
- begin
- // move the spheres
- alpha:=DegToRad(newTime*60);
- OrbitingSphere1.Position.SetPoint(1.5*cos(alpha), 1.5*sin(alpha), 1.5*sin(alpha));
- alpha:=alpha+PI/2;
- OrbitingSphere2.Position.SetPoint(1.5*cos(alpha), 1.5*sin(alpha), 1.5*sin(alpha));
- end;
- end.
|