
16.06.2008, 22:24
|
Прохожий
|
|
Регистрация: 16.06.2008
Сообщения: 3
Репутация: 10
|
|
Почему не хочет создаваться IDirect3DDevice9
Посмотрите пожалуйста в чём ошибка. У меня не хочет создаваться графическое устройство, если убрать в прорисовке проверку на nil, то выдаёт Access Violitation
PHP код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Direct3D9, D3DX9, AppEvnts;
type
TForm1 = class(TForm)
ApplicationEvents1: TApplicationEvents;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
private
{ Private declarations }
DirectX : IDirect3D9;
Device : IDirect3DDevice9;
font : ID3DXFont;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
ps : PD3DPRESENT_PARAMETERS;
dm : TD3DDISPLAYMODE;
hRet : HRESULT;
begin
Device := nil;
DirectX := nil;
DirectX := Direct3DCreate9(D3D_SDK_VERSION);
DirectX.GetAdapterDisplayMode(D3DADAPTER_DEFAULT, dm);
ps.Windowed := true;
ps.SwapEffect := D3DSWAPEFFECT_DISCARD;
ps.BackBufferFormat := dm.Format;
HRet := DirectX.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Handle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, ps, Device);
HRet := D3DXCreateFont(Device, 15, 0, FW_BOLD, 1, FALSE, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH or FF_DONTCARE,
'Arial', Font);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
font := nil;
Device := nil;
DirectX := nil;
end;
procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
var Done: Boolean);
begin
if (device = nil) then exit;
Device.Clear(0, nil, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0, 0);
Device.BeginScene;
Device.EndScene;
Device.Present(nil, nil, 0, nil);
end;
end.
|