fVolcano.pas 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. unit fVolcano;
  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.ExtCtrls,
  12. Vcl.StdCtrls,
  13. GLS.Scene,
  14. GLS.Objects,
  15. GLS.ParticleFX,
  16. GLS.Cadencer,
  17. GLS.Behaviours,
  18. GLS.SceneViewer,
  19. GLS.Coordinates,
  20. GLS.BaseClasses;
  21. type
  22. TFormVolcano = class(TForm)
  23. GLSceneViewer1: TGLSceneViewer;
  24. GLScene1: TGLScene;
  25. GLCamera1: TGLCamera;
  26. DCVolcano: TGLDummyCube;
  27. PFXVolcano: TGLPolygonPFXManager;
  28. GLCadencer1: TGLCadencer;
  29. PFXRenderer: TGLParticleFXRenderer;
  30. Timer1: TTimer;
  31. Sphere1: TGLSphere;
  32. GLLightSource1: TGLLightSource;
  33. PFXBlue: TGLPolygonPFXManager;
  34. DCCamera: TGLDummyCube;
  35. RadioGroup1: TRadioGroup;
  36. Panel1: TPanel;
  37. procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
  38. newTime: Double);
  39. procedure Timer1Timer(Sender: TObject);
  40. procedure RadioGroup1Click(Sender: TObject);
  41. procedure FormCreate(Sender: TObject);
  42. private
  43. end;
  44. var
  45. FormVolcano: TFormVolcano;
  46. implementation
  47. {$R *.dfm}
  48. procedure TFormVolcano.GLCadencer1Progress(Sender: TObject; const deltaTime,
  49. newTime: Double);
  50. begin
  51. GLSceneViewer1.Invalidate;
  52. end;
  53. procedure TFormVolcano.Timer1Timer(Sender: TObject);
  54. begin
  55. Panel1.Caption:=Format('%.1f FPS - %3d Particles - Depth Sort: %.2f msec',
  56. [GLSceneViewer1.FramesPerSecond,
  57. PFXVolcano.Particles.ItemCount+PFXBlue.Particles.ItemCount,
  58. PFXRenderer.LastSortTime]);
  59. GLSceneViewer1.ResetPerformanceMonitor;
  60. end;
  61. procedure TFormVolcano.RadioGroup1Click(Sender: TObject);
  62. var
  63. source : TGLSourcePFXEffect;
  64. begin
  65. source:=GetOrCreateSourcePFX(DCVolcano);
  66. case RadioGroup1.ItemIndex of
  67. 0 : source.ParticleInterval:=0.1;
  68. 1 : source.ParticleInterval:=0.05;
  69. 2 : source.ParticleInterval:=0.02;
  70. 3 : source.ParticleInterval:=0.01;
  71. 4 : source.ParticleInterval:=0.005;
  72. 5 : source.ParticleInterval:=0.001;
  73. end;
  74. end;
  75. procedure TFormVolcano.FormCreate(Sender: TObject);
  76. begin
  77. RadioGroup1Click(Self);
  78. end;
  79. end.