fPhongD.pas 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. unit fPhongD;
  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. GLS.Scene,
  13. GLS.Objects,
  14. GLS.GeomObjects,
  15. GLS.Texture,
  16. GLS.SceneViewer,
  17. GLS.AsyncTimer,
  18. GLS.Cadencer,
  19. GLS.Material,
  20. GLS.Coordinates,
  21. GLS.BaseClasses,
  22. GLSL.AsmShader,
  23. GLSL.CustomShader,
  24. GLSL.PhongShader;
  25. type
  26. TForm1 = class(TForm)
  27. GLScene1: TGLScene;
  28. GLSceneViewer1: TGLSceneViewer;
  29. GLMaterialLibrary1: TGLMaterialLibrary;
  30. GLPhongShader1: TGLPhongShader;
  31. GLCamera1: TGLCamera;
  32. GLTeapot1: TGLTeapot;
  33. GLDummyCube1: TGLDummyCube;
  34. GLLightSource1: TGLLightSource;
  35. GLCadencer1: TGLCadencer;
  36. AsyncTimer1: TGLAsyncTimer;
  37. CheckBox1: TCheckBox;
  38. procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
  39. Shift: TShiftState; X, Y: Integer);
  40. procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
  41. X, Y: Integer);
  42. procedure AsyncTimer1Timer(Sender: TObject);
  43. procedure CheckBox1Click(Sender: TObject);
  44. procedure GLCadencer1Progress(Sender: TObject;
  45. const deltaTime, newTime: Double);
  46. public
  47. mx, my: Integer;
  48. end;
  49. var
  50. Form1: TForm1;
  51. implementation
  52. {$R *.dfm}
  53. procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
  54. Shift: TShiftState; X, Y: Integer);
  55. begin
  56. mx := X;
  57. my := Y;
  58. end;
  59. procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
  60. X, Y: Integer);
  61. begin
  62. if ssLeft in Shift then
  63. GLCamera1.MoveAroundTarget(my - Y, mx - X);
  64. mx := X;
  65. my := Y;
  66. end;
  67. procedure TForm1.AsyncTimer1Timer(Sender: TObject);
  68. begin
  69. Form1.Caption := 'Phong Shader - ' + GLSceneViewer1.FramesPerSecondText;
  70. GLSceneViewer1.ResetPerformanceMonitor;
  71. end;
  72. procedure TForm1.CheckBox1Click(Sender: TObject);
  73. begin
  74. GLPhongShader1.Enabled := CheckBox1.Checked;
  75. end;
  76. procedure TForm1.GLCadencer1Progress(Sender: TObject;
  77. const deltaTime, newTime: Double);
  78. begin
  79. CheckBox1.Checked := GLPhongShader1.Enabled;
  80. GLSceneViewer1.Invalidate;
  81. end;
  82. end.