Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.06.2008, 22:24
cavalera cavalera вне форума
Прохожий
 
Регистрация: 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. 
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:09.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2026