fBlurD.pas 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. unit fBlurD;
  2. interface
  3. uses
  4. System.SysUtils,
  5. System.Classes,
  6. Vcl.Graphics,
  7. Vcl.Imaging.Jpeg,
  8. Vcl.Controls,
  9. Vcl.Forms,
  10. Vcl.Dialogs,
  11. Vcl.StdCtrls,
  12. Vcl.ExtCtrls,
  13. GLS.SceneViewer,
  14. GLS.Scene,
  15. GLS.Objects,
  16. GLS.Texture,
  17. GLS.HUDObjects,
  18. GLS.CompositeImage,
  19. GLS.Cadencer,
  20. GLS.Blur,
  21. GLS.Material,
  22. GLS.Coordinates,
  23. GLS.BaseClasses,
  24. Stage.Utils;
  25. type
  26. TFormBlur = class(TForm)
  27. GLScene1: TGLScene;
  28. GLCamera1: TGLCamera;
  29. GLMaterialLibrary1: TGLMaterialLibrary;
  30. GLCube1: TGLCube;
  31. GLLightSource1: TGLLightSource;
  32. GLSceneViewer1: TGLSceneViewer;
  33. GLCadencer1: TGLCadencer;
  34. GLSphere1: TGLSphere;
  35. Panel1: TPanel;
  36. ComboBox1: TComboBox;
  37. Label1: TLabel;
  38. Label2: TLabel;
  39. ComboBox2: TComboBox;
  40. Timer1: TTimer;
  41. GLDummyCube1: TGLDummyCube;
  42. LabelFPS: TLabel;
  43. procedure FormCreate(Sender: TObject);
  44. procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
  45. newTime: Double);
  46. procedure ComboBox1Click(Sender: TObject);
  47. procedure ComboBox2Change(Sender: TObject);
  48. procedure Timer1Timer(Sender: TObject);
  49. procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
  50. X, Y: Integer);
  51. private
  52. oldx, oldy: integer;
  53. public
  54. B: TGLBlur;
  55. end;
  56. var
  57. FormBlur: TFormBlur;
  58. implementation
  59. {$R *.dfm}
  60. procedure TFormBlur.FormCreate(Sender: TObject);
  61. var
  62. I : Integer;
  63. begin
  64. var Path: TFileName := GetCurrentAssetPath();
  65. SetCurrentDir(Path + '\texture');
  66. GLMaterialLibrary1.TexturePaths := GetCurrentDir();
  67. // Add GLS.Blur to scene
  68. B := TGLBlur.Create(self);
  69. GLCube1.AddChild(B);
  70. B.TargetObject := GLCube1;
  71. B.RenderWidth := 256;
  72. B.RenderHeight := 256;
  73. // Load texture for objects
  74. GLMaterialLibrary1.Materials[0].Material.Texture.Image.LoadFromFile('marbletiles.jpg');
  75. ComboBox1.ItemIndex := 2;
  76. ComboBox1Click(self);
  77. end;
  78. procedure TFormBlur.GLCadencer1Progress(Sender: TObject; const deltaTime,
  79. newTime: Double);
  80. begin
  81. GLCube1.Turn(deltatime * 10);
  82. GLSphere1.Turn(deltatime * 50);
  83. end;
  84. procedure TFormBlur.ComboBox1Click(Sender: TObject);
  85. begin
  86. B.Preset := TGLBlurPreset(ComboBox1.itemIndex);
  87. end;
  88. procedure TFormBlur.ComboBox2Change(Sender: TObject);
  89. begin
  90. B.RenderWidth := StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]);
  91. B.RenderHeight := B.RenderWidth;
  92. end;
  93. procedure TFormBlur.Timer1Timer(Sender: TObject);
  94. begin
  95. LabelFPS.Caption := FloatToStr(Trunc(GLSceneViewer1.FramesPerSecond))+ ' FPS';
  96. GLSceneViewer1.ResetPerformanceMonitor;
  97. end;
  98. procedure TFormBlur.GLSceneViewer1MouseMove(Sender: TObject;
  99. Shift: TShiftState; X, Y: Integer);
  100. begin
  101. if ssLeft in Shift then
  102. begin
  103. GLCamera1.MoveAroundTarget(0.2 * (oldy - y), 0.2 * (oldx - x));
  104. end;
  105. oldx := x;
  106. oldy := y;
  107. end;
  108. end.