| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- unit fShadowPlaneD;
- interface
- uses
- Winapi.OpenGL,
- System.SysUtils,
- System.Classes,
- Vcl.Graphics,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- Vcl.StdCtrls,
- Vcl.ExtCtrls,
- Vcl.Imaging.Jpeg,
- GLS.ShadowPlane,
- GLS.Scene,
- GLS.SceneViewer,
- GLS.Objects,
- GLS.Cadencer,
- Stage.VectorGeometry,
- GLS.Texture,
- GLS.GeomObjects,
-
- GLS.Material,
- GLS.Coordinates,
- GLS.BaseClasses,
- Stage.Utils;
- type
- TFormShadowPlane = class(TForm)
- GLSceneViewer1: TGLSceneViewer;
- GLScene1: TGLScene;
- DCShadowing: TGLDummyCube;
- GLLightSource1: TGLLightSource;
- Cube1: TGLCube;
- Sphere1: TGLSphere;
- GLCamera1: TGLCamera;
- GLCadencer1: TGLCadencer;
- DCLight: TGLDummyCube;
- Sphere2: TGLSphere;
- Torus1: TGLTorus;
- DCCameraTarget: TGLDummyCube;
- GLShadowPlane1: TGLShadowPlane;
- Timer1: TTimer;
- Panel1: TPanel;
- CBShadows: TCheckBox;
- CBStencil: TCheckBox;
- GLShadowPlane2: TGLShadowPlane;
- GLMaterialLibrary: TGLMaterialLibrary;
- GLShadowPlane3: TGLShadowPlane;
- procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
- newTime: Double);
- procedure FormCreate(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- procedure CBShadowsClick(Sender: TObject);
- procedure CBStencilClick(Sender: TObject);
- private
-
- public
-
- end;
- var
- FormShadowPlane: TFormShadowPlane;
- implementation
- {$R *.dfm}
- procedure TFormShadowPlane.FormCreate(Sender: TObject);
- begin
- var Path: TFileName := GetCurrentAssetPath();
- SetCurrentDir(Path + '\texture');
- GLMaterialLibrary.TexturePaths := GetCurrentDir;
- GLMaterialLibrary.Materials[0].Material.Texture.Image.LoadFromFile('BeigeMarble.jpg');
- end;
- procedure TFormShadowPlane.GLCadencer1Progress(Sender: TObject; const deltaTime,
- newTime: Double);
- begin
- DCLight.PitchAngle:=Sin(newTime)*60;
- DCShadowing.TurnAngle:=newTime*10;
- end;
- procedure TFormShadowPlane.CBShadowsClick(Sender: TObject);
- begin
- if CBShadows.Checked then
- GLShadowPlane1.ShadowedLight:=GLLightSource1
- else GLShadowPlane1.ShadowedLight:=nil;
- GLShadowPlane2.ShadowedLight:=GLShadowPlane1.ShadowedLight;
- GLShadowPlane3.ShadowedLight:=GLShadowPlane1.ShadowedLight;
- end;
- procedure TFormShadowPlane.CBStencilClick(Sender: TObject);
- begin
- if CBStencil.Checked then
- GLShadowPlane1.ShadowOptions:=[spoUseStencil, spoScissor]
- else GLShadowPlane1.ShadowOptions:=[spoScissor];
- GLShadowPlane2.ShadowOptions:=GLShadowPlane1.ShadowOptions;
- GLShadowPlane3.ShadowOptions:=GLShadowPlane1.ShadowOptions;
- end;
- procedure TFormShadowPlane.Timer1Timer(Sender: TObject);
- begin
- Caption := 'Shadow Plane - ' + Format('%.1f FPS',
- [GLSceneViewer1.FramesPerSecond]);
- GLSceneViewer1.ResetPerformanceMonitor;
- end;
- end.
|