fScreenSaver1D.pas 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. unit fScreenSaver1D;
  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. GLS.Scene,
  12. GLS.ScreenSaver,
  13. GLS.Objects,
  14. GLS.Behaviours,
  15. GLS.Cadencer,
  16. GLS.SceneViewer,
  17. GLS.GeomObjects,
  18. GLS.Coordinates,
  19. GLS.BaseClasses;
  20. type
  21. TForm1 = class(TForm)
  22. GLScene1: TGLScene;
  23. GLSceneViewer1: TGLSceneViewer;
  24. GLCamera1: TGLCamera;
  25. DummyCube1: TGLDummyCube;
  26. DummyCube2: TGLDummyCube;
  27. DummyCube3: TGLDummyCube;
  28. DummyCube4: TGLDummyCube;
  29. GLLightSource1: TGLLightSource;
  30. GLLightSource2: TGLLightSource;
  31. GLLightSource3: TGLLightSource;
  32. Torus1: TGLTorus;
  33. GLCadencer1: TGLCadencer;
  34. GLScreenSaver1: TGLScreenSaver;
  35. procedure FormResize(Sender: TObject);
  36. procedure FormShow(Sender: TObject);
  37. procedure FormCreate(Sender: TObject);
  38. procedure GLScreenSaver1PropertiesRequested(Sender: TObject);
  39. private
  40. public
  41. end;
  42. var
  43. Form1: TForm1;
  44. implementation
  45. {$R *.DFM}
  46. uses
  47. fScreenSaver2D;
  48. procedure TForm1.FormCreate(Sender: TObject);
  49. begin
  50. // read our option
  51. case GetMeshResolutions of
  52. 0:
  53. begin // Low Res, this is one ugly torus
  54. Torus1.Rings := 8;
  55. Torus1.Sides := 6;
  56. end;
  57. 1:
  58. begin // High Res, should still look smooth at high resolutions
  59. Torus1.Rings := 64;
  60. Torus1.Sides := 32;
  61. end;
  62. end;
  63. end;
  64. procedure TForm1.FormShow(Sender: TObject);
  65. begin
  66. // let the show begin :)
  67. GLCadencer1.Enabled := True;
  68. end;
  69. procedure TForm1.GLScreenSaver1PropertiesRequested(Sender: TObject);
  70. begin
  71. // we create the dialog dans display it
  72. // we do not need to free it (TApplication will take care of this)
  73. Application.CreateForm(TForm2, Form2);
  74. Form2.ShowModal;
  75. end;
  76. procedure TForm1.FormResize(Sender: TObject);
  77. begin
  78. // "Rescale" when form size is changed so our saver always looks the same
  79. GLCamera1.FocalLength := 50 * Width / 400;
  80. end;
  81. end.