Delphi,在DelphiXE下使用DirectX的初步摸索
来源:互联网 发布:淘宝如何好评截图 编辑:程序博客网 时间:2024/06/06 09:10
http://blog.sina.com.cn/s/blog_722bc92e0101ch7q.html
昨天刚安装了 DelphiXE , Delphi2010以上的版本自带了 DirectX 的SDK。
不多说了,先上代码
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Direct3D8, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Device : IDirect3DDevice8;
pd3d : IDirect3D8;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
parms : D3DPRESENT_PARAMETERS ;
hr : HRESULT ;
begin
memo1.Clear;
pd3d := Direct3DCreate8 ( D3D_SDK_VERSION ) ;
parms.BackBufferWidth := 0 ;
parms.BackBufferHeight := 0 ;
parms.BackBufferFormat := D3DFMT_A8R8G8B8 ;
parms.BackBufferCount := 1 ;
parms.MultiSampleType := D3DMULTISAMPLE_NONE ;
parms.SwapEffect := D3DSWAPEFFECT_COPY ;
parms.Windowed := TRUE ;
parms.hDeviceWindow := Self.Handle ;
parms.EnableAutoDepthStencil := FALSE ;
parms.AutoDepthStencilFormat := D3DFMT_UNKNOWN ;
parms.Flags := 0 ;
parms.FullScreen_RefreshRateInHz := 0 ;
parms.FullScreen_PresentationInterval := D3DPRESENT_INTERVAL_DEFAULT ;
hr := pd3d.CreateDevice( D3DADAPTER_DEFAULT , D3DDEVTYPE_REF , Self.Handle , D3DCREATE_SOFTWARE_VERTEXPROCESSING , parms , Device ) ;
if ( FAILED ( hr ) ) then
begin
Memo1.Lines.Add('不能创建 HAL 设备!') ;
hr := pd3d.CreateDevice( D3DADAPTER_DEFAULT , D3DDEVTYPE_REF , Self.Handle , D3DCREATE_SOFTWARE_VERTEXPROCESSING , parms , Device ) ;
if ( FAILED ( hr ) ) then
begin
Memo1.Lines.Add('不能创建 REF 设备!') ;
Self.Close ;
end