fShadowPlaneD.pas 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. unit fShadowPlaneD;
  2. interface
  3. uses
  4. Winapi.OpenGL,
  5. System.SysUtils,
  6. System.Classes,
  7. Vcl.Graphics,
  8. Vcl.Controls,
  9. Vcl.Forms,
  10. Vcl.Dialogs,
  11. Vcl.StdCtrls,
  12. Vcl.ExtCtrls,
  13. Vcl.Imaging.Jpeg,
  14. GLS.ShadowPlane,
  15. GLS.Scene,
  16. GLS.SceneViewer,
  17. GLS.Objects,
  18. GLS.Cadencer,
  19. Stage.VectorGeometry,
  20. GLS.Texture,
  21. GLS.GeomObjects,
  22. GLS.Material,
  23. GLS.Coordinates,
  24. GLS.BaseClasses,
  25. Stage.Utils;
  26. type
  27. TFormShadowPlane = class(TForm)
  28. GLSceneViewer1: TGLSceneViewer;
  29. GLScene1: TGLScene;
  30. DCShadowing: TGLDummyCube;
  31. GLLightSource1: TGLLightSource;
  32. Cube1: TGLCube;
  33. Sphere1: TGLSphere;
  34. GLCamera1: TGLCamera;
  35. GLCadencer1: TGLCadencer;
  36. DCLight: TGLDummyCube;
  37. Sphere2: TGLSphere;
  38. Torus1: TGLTorus;
  39. DCCameraTarget: TGLDummyCube;
  40. GLShadowPlane1: TGLShadowPlane;
  41. Timer1: TTimer;
  42. Panel1: TPanel;
  43. CBShadows: TCheckBox;
  44. CBStencil: TCheckBox;
  45. GLShadowPlane2: TGLShadowPlane;
  46. GLMaterialLibrary: TGLMaterialLibrary;
  47. GLShadowPlane3: TGLShadowPlane;
  48. procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
  49. newTime: Double);
  50. procedure FormCreate(Sender: TObject);
  51. procedure Timer1Timer(Sender: TObject);
  52. procedure CBShadowsClick(Sender: TObject);
  53. procedure CBStencilClick(Sender: TObject);
  54. private
  55. public
  56. end;
  57. var
  58. FormShadowPlane: TFormShadowPlane;
  59. implementation
  60. {$R *.dfm}
  61. procedure TFormShadowPlane.FormCreate(Sender: TObject);
  62. begin
  63. var Path: TFileName := GetCurrentAssetPath();
  64. SetCurrentDir(Path + '\texture');
  65. GLMaterialLibrary.TexturePaths := GetCurrentDir;
  66. GLMaterialLibrary.Materials[0].Material.Texture.Image.LoadFromFile('BeigeMarble.jpg');
  67. end;
  68. procedure TFormShadowPlane.GLCadencer1Progress(Sender: TObject; const deltaTime,
  69. newTime: Double);
  70. begin
  71. DCLight.PitchAngle:=Sin(newTime)*60;
  72. DCShadowing.TurnAngle:=newTime*10;
  73. end;
  74. procedure TFormShadowPlane.CBShadowsClick(Sender: TObject);
  75. begin
  76. if CBShadows.Checked then
  77. GLShadowPlane1.ShadowedLight:=GLLightSource1
  78. else GLShadowPlane1.ShadowedLight:=nil;
  79. GLShadowPlane2.ShadowedLight:=GLShadowPlane1.ShadowedLight;
  80. GLShadowPlane3.ShadowedLight:=GLShadowPlane1.ShadowedLight;
  81. end;
  82. procedure TFormShadowPlane.CBStencilClick(Sender: TObject);
  83. begin
  84. if CBStencil.Checked then
  85. GLShadowPlane1.ShadowOptions:=[spoUseStencil, spoScissor]
  86. else GLShadowPlane1.ShadowOptions:=[spoScissor];
  87. GLShadowPlane2.ShadowOptions:=GLShadowPlane1.ShadowOptions;
  88. GLShadowPlane3.ShadowOptions:=GLShadowPlane1.ShadowOptions;
  89. end;
  90. procedure TFormShadowPlane.Timer1Timer(Sender: TObject);
  91. begin
  92. Caption := 'Shadow Plane - ' + Format('%.1f FPS',
  93. [GLSceneViewer1.FramesPerSecond]);
  94. GLSceneViewer1.ResetPerformanceMonitor;
  95. end;
  96. end.