| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- unit fMemViewerD;
- interface
- uses
- Winapi.OpenGL,
- System.SysUtils,
- System.Classes,
- Vcl.Imaging.JPeg,
- Vcl.Graphics,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- Vcl.StdCtrls,
- Vcl.ExtCtrls,
-
- GLS.Scene,
- GLS.Objects,
- GLS.Cadencer,
- GLS.Texture,
- GLS.SceneViewer,
-
- GLS.Coordinates,
- GLS.BaseClasses,
- GLS.Context,
- GLS.OpenGLAdapter;
- type
- TFormMemViewer = class(TForm)
- Timer1: TTimer;
- GLSceneViewer1: TGLSceneViewer;
- GLScene1: TGLScene;
- GLCamera1: TGLCamera;
- DummyCube1: TGLDummyCube;
- Cube1: TGLCube;
- GLLightSource1: TGLLightSource;
- GLMemoryViewer1: TGLMemoryViewer;
- GLCadencer1: TGLCadencer;
- Panel1: TPanel;
- Label1: TLabel;
- Label2: TLabel;
- RB1to1: TRadioButton;
- RB1to2: TRadioButton;
- RB1to10: TRadioButton;
- CheckBox1: TCheckBox;
- LabelFPS: TLabel;
- procedure Timer1Timer(Sender: TObject);
- procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
- newTime: Double);
- procedure CheckBox1Click(Sender: TObject);
- procedure GLSceneViewer1AfterRender(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure RB1to1Click(Sender: TObject);
- private
-
- textureFramerateRatio, n: Integer;
- public
-
- end;
- var
- FormMemViewer: TFormMemViewer;
- implementation
- {$R *.dfm}
- procedure TFormMemViewer.FormCreate(Sender: TObject);
- begin
- textureFramerateRatio := 1;
- n := 0;
- end;
- procedure TFormMemViewer.RB1to1Click(Sender: TObject);
- begin
- textureFramerateRatio := (Sender as TRadioButton).Tag;
- end;
- procedure TFormMemViewer.CheckBox1Click(Sender: TObject);
- begin
- if CheckBox1.Checked then
- GLSceneViewer1.VSync := vsmSync
- else
- GLSceneViewer1.VSync := vsmNoSync;
- end;
- procedure TFormMemViewer.GLSceneViewer1AfterRender(Sender: TObject);
- begin
- if not GLSceneViewer1.Buffer.RenderingContext.gl.W_ARB_pbuffer then
- begin
- ShowMessage('WGL_ARB_pbuffer not supported...'#13#10#13#10
- + 'Get newer graphics hardware or try updating your drivers!');
- GLSceneViewer1.AfterRender := nil;
- Exit;
- end;
- Inc(n);
- try
- if n >= textureFramerateRatio then
- begin
- // render to the viewer
- GLMemoryViewer1.Render;
- // copy result to the textures
- GLMemoryViewer1.CopyToTexture(Cube1.Material.Texture);
- n := 0;
- end;
- except
- // pbuffer not supported... catchall for exotic ICDs...
- GLSceneViewer1.AfterRender := nil;
- raise;
- end;
- end;
- procedure TFormMemViewer.GLCadencer1Progress(Sender: TObject; const deltaTime,
- newTime: Double);
- begin
- DummyCube1.TurnAngle := newTime * 60;
- end;
- procedure TFormMemViewer.Timer1Timer(Sender: TObject);
- begin
- LabelFPS.Caption := Format('GLScene Memory Viewer'+' - %.1f FPS', [GLSceneViewer1.FramesPerSecond]);
- GLSceneViewer1.ResetPerformanceMonitor;
- end;
- end.
|