home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / DELPHIX.ZIP / Samples / d3drm / sprite / DXsprite.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-10-06  |  5.5 KB  |  170 lines

  1. unit DXSprite;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   DXDraws, DXclass, DirectX, ExtCtrls, StdCtrls;
  8.  
  9. type
  10.   TfrmDX = class(TDXForm)
  11.     DXDraw: TDXDraw;
  12.     DXTimer1: TDXTimer;
  13.     Image1: TImage;
  14.     Image2: TImage;
  15.     Image3: TImage;
  16.     ScrollBar1: TScrollBar;
  17.     procedure DXDrawInitialize(Sender: TObject);
  18.     procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
  19.     procedure FormKeyPress(Sender: TObject; var Key: Char);
  20.     procedure Image1Click(Sender: TObject);
  21.     procedure Image2Click(Sender: TObject);
  22.     procedure Image3Click(Sender: TObject);
  23.     procedure ScrollBar1Change(Sender: TObject);
  24.     procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  25.       var ScrollPos: Integer);
  26.   private
  27.     { Private declarations }
  28.   public
  29.     { Public declarations }
  30.     SceneMeshBuilder      :Idirect3DRMMeshBuilder;
  31.     ObjectMesh            :Idirect3DRMMeshBuilder;
  32.     SceneFrame            :IDirect3DRMFrame;
  33.     Light                 :Idirect3DRMLight;
  34.     LightFrame            :Idirect3DRMFrame;
  35.     PlaneFrame            :IDirect3DRMFrame;
  36.     SphereFrame           :IDirect3DRMFrame;
  37.     Shadow                :Idirect3DRMVisual;
  38.     // -----------------------------------------
  39.     Frame,Axis,Circle     :IDirect3DRMFrame;
  40.     tex                   :IDirect3DRMTexture;
  41.     inf                  :D3DRMIMAGE;
  42.   end;
  43.  
  44. var
  45.   frmDX: TfrmDX;
  46.   filename:string;
  47. implementation
  48.  
  49. {$R *.DFM}
  50.  
  51. procedure TfrmDX.DXDrawInitialize(Sender: TObject);
  52. begin
  53. DXtimer1.Enabled:=false;
  54. {create meshbulder}
  55. DXdraw.D3DRM.CreateMeshBuilder(SceneMeshBuilder);
  56. DXdraw.D3DRM.CreateMeshBuilder(ObjectMesh);
  57. {create frame}
  58. DXdraw.D3DRM.CreateFrame(DXdraw.scene,LightFrame);
  59. DXdraw.D3DRM.CreateFrame(DXdraw.scene,SceneFrame);
  60. DXdraw.D3DRM.CreateFrame(DXdraw.scene,SphereFrame);
  61. DXdraw.D3DRM.CreateFrame(DXdraw.scene,PlaneFrame);
  62. DXdraw.D3DRM.CreateFrame(DXdraw.scene,frame);
  63.  
  64. {setup view}
  65. DXdraw.Camera.SetPosition(DXdraw.scene,0,2,-10);
  66. {direction in Z axes    UP vector in Y axes }
  67. DXdraw.Camera.SetOrientation(DXdraw.scene,0,0,1,0,1,0);
  68. //DXdraw.Camera.SetRotation(DXdraw.scene,0,1,0,0.04);
  69. DXtimer1.Enabled:=true;
  70. {default scene light}
  71. DXDraw.D3DRM.CreateLightRGB(D3DRMLIGHT_AMBIENT, 0.9, 0.9, 0.9, Light);
  72. DXDraw.Scene.AddLight(Light);
  73. {  Spot Light create and setting  }
  74. DXDraw.D3DRM.CreateLightRGB(D3DRMLIGHT_SPOT, 1, 1, 1, Light);
  75. with light do
  76.        begin
  77.         setPenUmbra(0.2);   // outer Cone
  78.         setUmbra(0.15);     // inner Cone
  79.         SetRange(40);
  80.        end;
  81.  
  82. {load plane}
  83. FileName := ExtractFilePath(Application.ExeName)+'plane.x';
  84. ChDir(ExtractFilePath(FileName));
  85. SceneMeshBuilder.Load(PChar(FileName), nil, D3DRMLOAD_FROMFILE, nil, nil);
  86. SceneMeshBuilder.Scale(3, 3, 3);
  87. SceneFrame.SetPosition(DXdraw.scene,0,-1,0);
  88. SceneFrame.AddVisual(SceneMeshBuilder);
  89.  
  90. frame.SetPosition(DXdraw.scene,0,0,0);
  91. frame.SetOrientation(DXdraw.scene,0,1,0,0,0,1);
  92. //frame.setrotation(Dxdraw.scene,0,0.9,0,0.04);
  93.  
  94. Dxdraw.D3DRM.CreateTexture(inf,tex);               // create texture
  95. Dxdraw.D3DRM.LoadTexture(pchar('expl.bmp'),tex);   // load texture
  96. tex.SetColors(256);                                // set color
  97. tex.SetShades(1);                                  // set shade
  98. tex.SetDecalScale(0);                              // set scale N=>0, if >0 then scale down
  99. tex.SetDecalOrigin(64,64);                         // set origin
  100. tex.SetDecalTransparency(true);                    // transparency ON (default black color)
  101. Dxdraw.D3DRM.CreateFrame(frame,axis);              // create axis frame
  102. Frame.SetRotation(DXdraw.scene,0,0,1,0.04);        // set rotation for frame around Z
  103. axis.SetRotation(DXdraw.scene,0,1,0,0.04);         // set rotation for AXIS around Y
  104. Dxdraw.D3DRM.CreateFrame(axis,circle);             // create circle frame
  105. circle.SetPosition(axis,2.6,0,0);                  // set position
  106.  
  107. circle.AddVisual(tex);                             // add texture(sprite) to circle
  108.  
  109. end;
  110.  
  111. procedure TfrmDX.DXTimer1Timer(Sender: TObject; LagCount: Integer);
  112. begin
  113. DXdraw.Render;
  114. DXdraw.scene.move(1);
  115. DXdraw.flip;
  116.  
  117. end;
  118.  
  119. procedure TfrmDX.FormKeyPress(Sender: TObject; var Key: Char);
  120. begin
  121. if key=#27 then close;
  122. if key='1' then begin
  123.                 SceneMeshBuilder.SetQuality(D3DRMRENDER_WIREFRAME);
  124.                 ObjectMesh.SetQuality(D3DRMRENDER_WIREFRAME);
  125.                 end;
  126. if key='2' then begin
  127.                 SceneMeshBuilder.SetQuality(D3DRMRENDER_FLAT);
  128.                 ObjectMesh.SetQuality(D3DRMRENDER_FLAT);
  129.                 end;
  130. if key='3' then begin
  131.                 SceneMeshBuilder.SetQuality(D3DRMRENDER_PHONG);
  132.                 ObjectMesh.SetQuality(D3DRMRENDER_PHONG);
  133.                 end;
  134.  
  135. end;
  136.  
  137. procedure TfrmDX.Image1Click(Sender: TObject);
  138. begin
  139. SceneMeshBuilder.SetQuality(D3DRMRENDER_WIREFRAME);
  140. ObjectMesh.SetQuality(D3DRMRENDER_WIREFRAME);
  141. end;
  142.  
  143. procedure TfrmDX.Image2Click(Sender: TObject);
  144. begin
  145. SceneMeshBuilder.SetQuality(D3DRMRENDER_FLAT);
  146. ObjectMesh.SetQuality(D3DRMRENDER_FLAT);
  147.  
  148. end;
  149.  
  150. procedure TfrmDX.Image3Click(Sender: TObject);
  151. begin
  152. SceneMeshBuilder.SetQuality(D3DRMRENDER_PHONG);
  153. ObjectMesh.SetQuality(D3DRMRENDER_PHONG);
  154.  
  155. end;
  156.  
  157. procedure TfrmDX.ScrollBar1Change(Sender: TObject);
  158. begin
  159. tex.SetDecalSize(scrollbar1.position,scrollbar1.position);
  160. DXdraw.flip;
  161. end;
  162.  
  163. procedure TfrmDX.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  164.   var ScrollPos: Integer);
  165. begin
  166. DXdraw.render;
  167. end;
  168.  
  169. end.
  170.