我最近开始学习DirectX的编程,因为DirectX 8要好用了很多,所以才打算学习的,我遇到一个问题,我怎么也旋转不了画的一个三角形面,我完全按照SDK的例子写的,奇怪的很,源程序如下,需要DirectX8 Pascal翻译文件的可以找我要。unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DirectXGraphics,DXCommon, ActiveX, ComObj, StdCtrls, D3DX8,
  MMSystem;type  TCUSTOMVERTEX = record
    X,Y,Z,RHW:Single;
    Color:DWORD;
  end;  TForm2 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    procedure FormPaint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    ID3d:IDirect3D8;
    ID3DD:IDirect3DDevice8;
    IBuf:IDirect3DVertexBuffer8;
  end;var
  Form2: TForm2;const
  D3DFVF_CUSTOMVERTEX=D3DFVF_XYZRHW or D3DFVF_DIFFUSE;implementation{$R *.dfm}procedure TForm2.FormPaint(Sender: TObject);
var
  matWorld:TD3DXMATRIX;
  matView:TD3DXMatrix;
  D1,D2,D3:TD3DXVECTOR3;
  matProj:TD3DXMATRIX;
begin
  OLECheck(ID3DD.Clear(0,nil,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0,0));
  OLECheck(ID3DD.BeginScene);
  D3DXMatrixRotationY(matWorld,timeGetTime/150.0);
  OLECheck(ID3DD.SetTransform(D3DTS_WORLD,matWorld));
  D1:=D3DXVECTOR3(0.0,3.0,-5.0);
  D2:=D3DXVECTOR3(0.0,0.0,0.0);
  D3:=D3DXVECTOR3(0.0,1.0,0.0);
  D3DXMatrixLookAtLH(matView,D1,D2,D3);
  OLECheck(ID3DD.SetTransform(D3DTS_VIEW,matView));
  D3DXMatrixPerspectiveFovLH(matProj,D3DX_PI/4,1.0,1.0,100.0);
  OLECheck(ID3DD.SetTransform(D3DTS_PROJECTION,matProj));
  OLECheck(ID3DD.SetStreamSource(0,IBuf,SizeOf(TCUSTOMVERTEX)));
  OLECheck(ID3DD.SetVertexShader(D3DFVF_CUSTOMVERTEX));
  OLECheck(ID3DD.DrawPrimitive(D3DPT_TRIANGLESTRIP,0,1));
  OLECheck(ID3DD.EndScene);
  OLECheck(ID3DD.Present(nil,nil,0,nil));
end;procedure TForm2.FormCreate(Sender: TObject);
var
  D3DDM:TD3DDISPLAYMODE;
  D3DPP:TD3DPRESENT_PARAMETERS;
  Points:array of TCUSTOMVERTEX;
  Buf:PByte;
begin
  SetLength(Points,3);
  Points[0].X:=150.0;
  Points[0].Y:=50.0;
  Points[0].Z:=0.5;
  Points[0].RHW:=1.0;
  Points[0].Color:=$ffff0000;
  Points[1].X:=250.0;
  Points[1].Y:=250.0;
  Points[1].Z:=0.5;
  Points[1].RHW:=1.0;
  Points[1].Color:=$ff00ff00;
  Points[2].X:=50.0;
  Points[2].Y:=250.0;
  Points[2].Z:=0.5;
  Points[2].RHW:=1.0;
  Points[2].Color:=$ff00ffff;
  ID3d:=Direct3DCreate8(D3D_SDK_VERSION);
  OLECheck(ID3D.GetAdapterDisplayMode(D3DADAPTER_DEFAULT,D3DDM));
  FillChar(D3DPP,SizeOf(D3DPP),0);
  D3DPP.Windowed:=True;
  D3DPP.SwapEffect:=D3DSWAPEFFECT_DISCARD;
  D3DPP.BackBufferFormat:=D3DDM.Format;
  OLECheck(ID3d.CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,Form2.Handle,D3DCREATE_SOFTWARE_VERTEXPROCESSING,D3DPP,ID3DD));
  OLECheck(ID3DD.CreateVertexBuffer(3*SizeOf(TCUSTOMVERTEX),0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,IBuf));
  OLECheck(IBuf.Lock(0,3*SizeOf(TCUSTOMVERTEX),Buf,0));
  Move(Points[0],Buf^,3*SizeOf(TCUSTOMVERTEX));
  OLECheck(IBuf.Unlock);
  Finalize(Points);
end;procedure TForm2.FormDestroy(Sender: TObject);
begin
  IBuf:=nil;
  ID3DD:=nil;
  ID3D:=nil;
end;procedure TForm2.Timer1Timer(Sender: TObject);
var
  matWorld:TD3DXMATRIX;
  matView:TD3DXMatrix;
  D1,D2,D3:TD3DXVECTOR3;
  matProj:TD3DXMATRIX;
begin
  OLECheck(ID3DD.Clear(0,nil,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0,0));
  OLECheck(ID3DD.BeginScene);
  D3DXMatrixRotationY(matWorld,timeGetTime/150);
  OLECheck(ID3DD.SetTransform(D3DTS_WORLD,matWorld));
  D1:=D3DXVECTOR3(0.0,3.0,-5.0);
  D2:=D3DXVECTOR3(0.0,0.0,0.0);
  D3:=D3DXVECTOR3(0.0,1.0,0.0);
  D3DXMatrixLookAtLH(matView,D1,D2,D3);
  OLECheck(ID3DD.SetTransform(D3DTS_VIEW,matView));
  D3DXMatrixPerspectiveFovLH(matProj,D3DX_PI/4,1.0,1.0,100.0);
  OLECheck(ID3DD.SetTransform(D3DTS_PROJECTION,matProj));
  OLECheck(ID3DD.SetStreamSource(0,IBuf,SizeOf(TCUSTOMVERTEX)));
  OLECheck(ID3DD.SetVertexShader(D3DFVF_CUSTOMVERTEX));
  OLECheck(ID3DD.DrawPrimitive(D3DPT_TRIANGLESTRIP,0,1));
  OLECheck(ID3DD.EndScene);
  OLECheck(ID3DD.Present(nil,nil,0,nil));
end;procedure TForm2.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=not Timer1.Enabled;
end;end.帮忙看看我什么地方理解错了。谢谢,200分奉上,不够还可以加,我有8000可用分。