| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- unit fVertexGenD;
- interface
- uses
- System.SysUtils,
- System.Variants,
- System.Classes,
- Vcl.Graphics,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- GLS.Scene,
- GLScene.VectorTypes,
- GLScene.VectorGeometry,
- GLS.PipelineTransformation,
- GLS.Cadencer,
- GLS.SceneViewer,
-
- GLScene.BaseClasses,
- GLS.SimpleNavigation,
- GLS.Objects,
- GLScene.Coordinates,
- GLS.Context,
- CUDA.APIComps,
- CUDA.Compiler,
- CUDA.Context,
- CUDA.Graphics,
- GLS.Material,
- GLSL.CustomShader,
- GLSL.Shader;
- type
- TForm1 = class(TForm)
- GLScene1: TGLScene;
- GLSceneViewer1: TGLSceneViewer;
- GLCadencer1: TGLCadencer;
- GLCamera1: TGLCamera;
- GLDummyCube1: TGLDummyCube;
- GLSimpleNavigation1: TGLSimpleNavigation;
- GLCUDADevice1: TGLCUDADevice;
- GLCUDA1: TGLCUDA;
- GLCUDACompiler1: TGLCUDACompiler;
- MainModule: TCUDAModule;
- DotFieldMapper: TCUDAGeometryResource;
- GLSLShader1: TGLSLShader;
- MakeDotField: TCUDAFunction;
- CUDAFeedbackMesh1: TCUDAFeedbackMesh;
- procedure GLCadencer1Progress(Sender: TObject;
- const deltaTime, newTime: Double);
- procedure MakeVertexBufferParameterSetup(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure GLSLShader1Apply(Shader: TGLCustomGLSLShader);
- procedure GLCUDA1OpenGLInteropInit(out Context: TGLContext);
- public
- FieldWidth: Integer;
- FieldHeight: Integer;
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- FieldWidth := 256;
- FieldHeight := 256;
- CUDAFeedbackMesh1.VertexNumber := FieldWidth * FieldHeight;
- CUDAFeedbackMesh1.Visible := True;
- MakeDotField.Grid.SizeX := FieldWidth div MakeDotField.BlockShape.SizeX;
- MakeDotField.Grid.SizeY := FieldWidth div MakeDotField.BlockShape.SizeY;
- end;
- procedure TForm1.GLCUDA1OpenGLInteropInit(out Context: TGLContext);
- begin
- Context := GLSceneViewer1.Buffer.RenderingContext;
- end;
- procedure TForm1.GLSLShader1Apply(Shader: TGLCustomGLSLShader);
- begin
- with GLSceneViewer1.Buffer.RenderingContext.PipelineTransformation do
- Shader.Param['ModelViewProjectionMatrix'].AsMatrix4f :=
- MatrixMultiply(ModelViewMatrix^, ProjectionMatrix^);
- end;
- procedure TForm1.MakeVertexBufferParameterSetup(Sender: TObject);
- begin
- with MakeDotField do
- begin
- SetParam(DotFieldMapper.AttributeDataAddress[CUDAFeedbackMesh1.Attributes[0].Name]);
- SetParam(FieldWidth);
- SetParam(FieldHeight);
- SetParam(GLCadencer1.CurrentTime);
- end;
- end;
- procedure TForm1.GLCadencer1Progress(Sender: TObject;
- const deltaTime, newTime: Double);
- begin
- GLSceneViewer1.Invalidate;
- end;
- end.
|