Форум по 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
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsDirect3D9D3DX9AppEvnts;

type
  TForm1 
= class(TForm)
    
ApplicationEvents1TApplicationEvents;
    
procedure FormCreate(SenderTObject);
    
procedure FormDestroy(SenderTObject);
    
procedure ApplicationEvents1Idle(SenderTObject; var DoneBoolean);
  private
    { Private 
declarations }
    
DirectX IDirect3D9;
    
Device IDirect3DDevice9;
    
font ID3DXFont;
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(SenderTObject);
var
  
ps PD3DPRESENT_PARAMETERS;
  
dm TD3DDISPLAYMODE;
  
hRet HRESULT;
begin
  Device 
:= nil;
  
DirectX := nil;
  
DirectX := Direct3DCreate9(D3D_SDK_VERSION);
  
DirectX.GetAdapterDisplayMode(D3DADAPTER_DEFAULTdm);

  
ps.Windowed := true;
  
ps.SwapEffect := D3DSWAPEFFECT_DISCARD;
  
ps.BackBufferFormat := dm.Format;
  
HRet := DirectX.CreateDevice(D3DADAPTER_DEFAULTD3DDEVTYPE_HALHandleD3DCREATE_SOFTWARE_VERTEXPROCESSINGpsDevice);

  
HRet := D3DXCreateFont(Device150FW_BOLD1FALSEDEFAULT_CHARSET,
             
OUT_DEFAULT_PRECISDEFAULT_QUALITYDEFAULT_PITCH or FF_DONTCARE,
             
'Arial'Font);
end;

procedure TForm1.FormDestroy(SenderTObject);
begin
  font 
:= nil;
  
Device := nil;
  
DirectX := nil;
end;

procedure TForm1.ApplicationEvents1Idle(SenderTObject;
  var 
DoneBoolean);
begin
  
if (device nilthen exit;
  
Device.Clear(0nilD3DCLEAR_TARGETD3DCOLOR_XRGB(000), 1.00);
  
Device.BeginScene;
  
Device.EndScene;
  
Device.Present(nilnil0nil);
end;

end
Ответить с цитированием
  #2  
Старый 17.06.2008, 12:49
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Неправильно использован ps (перепутаны структура TD3DPRESENT_PARAMETERS и адрес PD3DPRESENT_PARAMETERS).
Код:
var
  ps : TD3DPRESENT_PARAMETERS;
  dm : TD3DDISPLAYMODE;
  hRet : HRESULT;
begin
  DirectX := Direct3DCreate9(D3D_SDK_VERSION);
  DirectX.GetAdapterDisplayMode(D3DADAPTER_DEFAULT, dm);


  ZeroMemory(@ps, SizeOf(ps));              // windows.pas
  //  FillChar(ps, SizeOf(ps), 0);          // system.pas
  ps.Windowed := true;
  ps.SwapEffect := D3DSWAPEFFECT_DISCARD;
  ps.BackBufferFormat := dm.Format;
  HRet := DirectX.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Handle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, @ps, Device);
Ответить с цитированием
  #3  
Старый 28.08.2008, 09:03
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Это типо DerictX 9.0?
Ответить с цитированием
  #4  
Старый 28.08.2008, 11:35
CrazyFish CrazyFish вне форума
Прохожий
 
Регистрация: 23.07.2008
Сообщения: 5
Репутация: 10
По умолчанию

Слушайте народ, а есть хедеры на IDirectDraw7, DDCaps_DX7 версия как бы не принципиальна, т.е. необязательно DX7. Если есть скиньте на мыло: net-crazyfish@yandex.ru или дайте ссыль. Заранее спасибо.
Ответить с цитированием
  #5  
Старый 29.08.2008, 12:17
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Цитата:
Сообщение от CrazyFish
Слушайте народ, а есть хедеры на IDirectDraw7, DDCaps_DX7 версия как бы не принципиальна, т.е. необязательно DX7. Если есть скиньте на мыло: net-crazyfish@yandex.ru или дайте ссыль. Заранее спасибо.
Что значит хедеры?
Ответить с цитированием
  #6  
Старый 02.09.2008, 09:23
CrazyFish CrazyFish вне форума
Прохожий
 
Регистрация: 23.07.2008
Сообщения: 5
Репутация: 10
По умолчанию

Короче есть функция:

Код:
function VideoMemory: Cardinal;
var
  dDirect   : IDirectDraw7;
  Hal, Hel  : DDCaps_DX7;
begin
  DirectDrawCreateEx(Nil, dDirect, IID_IDirectDraw7, Nil);
  FillChar(Hal, SizeOf(DDCaps_DX7), 0);
  Hal.dwSize := SizeOf(DDCaps_DX7);
  FillChar(Hel, SizeOf(DDCaps_DX7), 0);
  Hel.dwSize := SizeOf(DDCaps_DX7);
  dDirect.GetCaps (@Hal, @Hel);
  Result := Hal.dwVidMemTotal;
end;

Надо ее оживить.
Ответить с цитированием
  #7  
Старый 04.09.2008, 07:46
CrazyFish CrazyFish вне форума
Прохожий
 
Регистрация: 23.07.2008
Сообщения: 5
Репутация: 10
По умолчанию

Проблема решена. Хедеры нашел здесь: http://www.clootie.ru/delphi/download_dx92.html, если кому интрересно.
Ответить с цитированием
  #8  
Старый 08.09.2008, 21:43
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Ну скачал... А кто - нибудь объяснит, что это за файлы?
Ответить с цитированием
  #9  
Старый 09.09.2008, 00:12
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

Цитата:
Сообщение от DungeonLords
Ну скачал... А кто - нибудь объяснит, что это за файлы?
заголовочные файлы для использования в своей программе DirectX
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #10  
Старый 11.09.2008, 13:00
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Это я понял, но как их использовать?
Ответить с цитированием
  #11  
Старый 12.09.2008, 12:49
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Как и любые фунции модулей (math, sysutils и проч.). Например, создать объект:
Direct3DCreate9(D3D_SDK_VERSION);
перед этим пишем:
uses Direct3D9,...
ещё, бывает, добавляется uses D3DX9
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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