Code Search for Developers
 
 
  

Unit1.pas from Sector-37 at Krugle


Show Unit1.pas syntax highlighted

unit Unit1;

interface

{$I GLScene.inc}

uses
  //VCL
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls,
  //GLScene
  GLScene, GLObjects, GLMisc, GLWin32Viewer, GLTexture, OpenGL1x,
  GLCgShader, Cg, cgGL, StdCtrls, VectorGeometry, GLCadencer, ComCtrls,
  GLVectorFileObjects, GLFile3DS, GLGraph, GLUserShader,
  //FileFormats
  JPEG, GLFileMD3,
  //Misc components
  StrangeCGZapShader, StrangeTrackBar
  {$IFDEF STRANGE_INIFILE_SUPPORT}, StrangeIniObjects{$ENDIF};

type
  TForm1 = class(TForm)
    GLScene1:   TGLScene;
    GLMaterialLibrary1: TGLMaterialLibrary;
    GLCadencer1: TGLCadencer;
    Panel1:     TPanel;
    Splitter1:  TSplitter;
    GLFreeForm1: TGLFreeForm;
    Panel9:     TPanel;
    Panel10:    TPanel;
    Timer1:     TTimer;
    GLXYZGrid1: TGLXYZGrid;
    CameraTarget: TGLDummyCube;
    GLFreeForm2: TGLFreeForm;
    GLFreeForm3: TGLFreeForm;
    GLSceneViewer1: TGLSceneViewer;
    GLCamera1:  TGLCamera;
    LightCube: TGLDummyCube;
    GLLightSource1: TGLLightSource;
    GLSphere1: TGLSphere;
    StrangeTrackBar1: TStrangeTrackBar;
    StrangeTrackBar2: TStrangeTrackBar;
    StrangeTrackBar3: TStrangeTrackBar;
    StrangeTrackBar4: TStrangeTrackBar;
    StrangeTrackBar5: TStrangeTrackBar;
    StrangeTrackBar6: TStrangeTrackBar;
    StrangeTrackBar7: TStrangeTrackBar;
    StrangeTrackBar8: TStrangeTrackBar;
    ShaderEnabledCheckBox: TCheckBox;
    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
    procedure GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: double);
    procedure FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: integer; MousePos: TPoint; var Handled: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: char);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure LightCubeProgress(Sender: TObject; const deltaTime,
      newTime: Double);
    procedure StrangeTrackBarChange(Sender: TObject);
    procedure ShaderEnabledCheckBoxClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    mx, my: integer;
  end;

var
  Form1:      TForm1;
  Shader: TGLCGZapShader;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  GLFreeForm1.LoadFromFile('Models\mesh_near.md3');
  GLFreeForm2.LoadFromFile('Models\Teapot.3ds');
  GLFreeForm3.LoadFromFile('Models\xleg.3DS');
  GLFreeForm1.Scale.Scale(0.2);
  GLFreeForm3.Scale.Scale(20);
  GLMaterialLibrary1.LibMaterialByName('Fighter').Material.Texture.Image.LoadFromFile('Textures\FighterTexture.jpg');

  Shader := TGLCGZapShader.Create(Self);
  Shader.Cadencer := GLCadencer1;
  GLMaterialLibrary1.LibMaterialByName('LibMaterial').Shader := Shader;

  //update all parameters
  StrangeTrackBarChange(Self);
end;


procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
begin
  mx := X;
  my := Y;
end;


procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
begin
  if Shift <> [] then
  begin
    GLCamera1.MoveAroundTarget(my - Y, mx - X);
    mx := X;
    my := Y;
  end;
end;


procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: double);
begin
  GLSceneViewer1.Invalidate;
end;


procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: integer; MousePos: TPoint; var Handled: Boolean);
begin
  with GLSceneViewer1 do
    if PtInRect(ClientRect, ScreenToClient(MousePos)) then
    begin
      GLCamera1.AdjustDistanceToTarget(1 + (WheelDelta / 120) * 0.5);
      Handled := True;
    end;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  with GLSceneViewer1 do
  begin
    Caption := Format('Strange Cg Zap Shader Demo by Da Stranger  -  November ''2006  -  %.1f fps', [FramesPerSecond]);
    ResetPerformanceMonitor;
  end;
end;


procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
  if key = #27 then
    Close;
end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Shader.Destroy;
  GLCadencer1.Enabled := False;
end;


procedure TForm1.LightCubeProgress(Sender: TObject; const deltaTime,
  newTime: Double);
begin
  LightCube.MoveObjectAround(CameraTarget, 0, - Deltatime * 10);
end;

procedure TForm1.StrangeTrackBarChange(Sender: TObject);
begin
  if Shader = nil then Exit;

  Shader.NoiseSpeed1 := StrangeTrackBar1.RealPosition;
  Shader.NoiseSpeed2 := StrangeTrackBar2.RealPosition;
  Shader.NoiseSpeed3 := StrangeTrackBar3.RealPosition;
  Shader.Spread := StrangeTrackBar4.RealPosition;
  Shader.Gamma := StrangeTrackBar5.RealPosition;
  Shader.Gain := StrangeTrackBar6.RealPosition;
  Shader.Fader := StrangeTrackBar7.RealPosition;
  Shader.Alpha := StrangeTrackBar8.RealPosition;
end;

procedure TForm1.ShaderEnabledCheckBoxClick(Sender: TObject);
begin
  Shader.Enabled := ShaderEnabledCheckBox.Checked;
end;

end.





See more files for this project here

Sector-37

Sector-37 (real time 3D cosmic strategy)

Project homepage: http://sourceforge.net/projects/sector37
Programming language(s): Pascal
License: lgpl21

  Models/
    TEAPOT.3DS
    mesh_near.md3
    xleg.3DS
  Textures/
    FighterTexture.jpg
  StrangeCGZapShaderDemo.dpr
  StrangeCGZapShaderDemo.res
  Unit1.dfm
  Unit1.pas
  _Cleanup.bat