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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.06.2011, 20:41
petro0127 petro0127 вне форума
Прохожий
 
Регистрация: 24.06.2011
Сообщения: 7
Репутация: 10
По умолчанию Помогите з direct x в delphi

direct x просто не запускається . вот код програми:

Код:
unit MAIN;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns,
  ActnList, ToolWin, ImgList,direct3d9, AppEvnts;

type
  TMainForm = class(TForm)
    ApplicationEventsmain: TApplicationEvents;
    procedure FileNew1Execute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ApplicationEventsmainIdle(Sender: TObject; var Done: Boolean);
    procedure ApplicationEventsmainMinimize(Sender: TObject);
    procedure ApplicationEventsmainRestore(Sender: TObject);
    procedure FormActivate(Sender: TObject);

  private
    { Private declarations }
    fd3d:idirect3d9;
    fd3ddevice:idirect3ddevice9;
    factive:boolean;
    function InitD3D: HResult;
    function cleardevice:Hresult;
    function renderscene:Hresult;
    procedure freed3d;
    procedure CreateMDIChild(const Name: string);

  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

uses CHILDWIN, about;

procedure TMainForm.CreateMDIChild(const Name: string);
var
  Child: TMDIChild;
begin
  { create a new MDI child window }
  Child := TMDIChild.Create(Application);
  Child.Caption := Name;
  if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name);
end;

procedure TMainForm.FileNew1Execute(Sender: TObject);
begin
  CreateMDIChild('NONAME' + IntToStr(MDIChildCount + 1));
end;

function TMainForm.InitD3D :Hresult;
var d3ddisplayinfo:Td3ddisplaymode;
d3dparameters:Td3dpresentparameters;
begin
result:=e_fail;
fd3d:=direct3dcreate9(d3d_sdk_version);
if fd3d=nil then exit;
result:=Fd3d.GetAdapterDisplayMode(d3dAdapter_default,d3ddisplayinfo);
if failed(result) then exit;
zeromemory(@d3dparameters,sizeof(d3dparameters));
d3dparameters.windowed:=true;
d3dparameters.SwapEffect:=d3dswapeffect_discard;
d3dparameters.BackBufferFormat:=d3ddisplayinfo.Format;
result:=fd3d.CreateDevice(D3DADAPTER_DEFAULT, d3ddevtype_hal, handle, d3dcreate_software_vertexprocessing, @d3dparameters, fd3ddevice);
end;

procedure Tmainform.freed3d;
begin
  fd3ddevice:=nil;
  fd3d:=nil;
end;


procedure TMainForm.FormCreate(Sender: TObject);
begin
if failed(initd3d) then
begin
  showmessage('drx error');
  halt;
end;
end;

procedure Tmainform.FormDestroy(sender:Tobject);
begin
 freed3d;
end;

function Tmainform.cleardevice:Hresult;
begin
result:=e_fail;
if fd3ddevice=nil then exit;
result:=fd3ddevice.clear(0,nil,d3dclear_target,d3dcolor_xrgb(0,0,0),1,0);
end;

function Tmainform.renderscene:Hresult;
begin
result:=cleardevice;
if failed(result) then exit;
fd3ddevice.Present(nil,nil,0,nil);
end;

procedure TMainForm.ApplicationEventsmainIdle(Sender: TObject; var Done: Boolean);
begin
if factive then
   begin
   renderscene;
   end;
done:=false;

end;

procedure TMainForm.ApplicationEventsmainMinimize(Sender: TObject);
begin
factive:=false
end;

procedure TMainForm.ApplicationEventsmainRestore(Sender: TObject);
begin
factive:=true;
end;

procedure TMainForm.FormActivate(Sender: TObject);
begin
factive:=true;
end;

end
.
Ответить с цитированием
  #2  
Старый 25.06.2011, 00:45
petro0127 petro0127 вне форума
Прохожий
 
Регистрация: 24.06.2011
Сообщения: 7
Репутация: 10
По умолчанию

при смене проекта з mdi app на vcl forms apps проблема решилась.
в delphi я новичок, но почему ето так???...и можна ли тогда создавать directx проекти как mdi appilications или использовать только vcl forms applications???
Ответить с цитированием
  #3  
Старый 25.06.2011, 01:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Что DirectX, что OpenGL, на дух не переносят MDI апликации.
Ответить с цитированием
  #4  
Старый 26.06.2011, 18:59
petro0127 petro0127 вне форума
Прохожий
 
Регистрация: 24.06.2011
Сообщения: 7
Репутация: 10
По умолчанию

тепер новая проблема з directX....какой тип приложений лутше использовать для directX????
Ответить с цитированием
  #5  
Старый 26.06.2011, 21:10
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Что значит какой тип? Яснее можно?
Ответить с цитированием
  #6  
Старый 26.06.2011, 23:16
petro0127 petro0127 вне форума
Прохожий
 
Регистрация: 24.06.2011
Сообщения: 7
Репутация: 10
По умолчанию

ну есть там mdi apps, sdi apps, vcl forms apps, service apps, control panel apps.
Ответить с цитированием
  #7  
Старый 26.06.2011, 23:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Используй стандартное окно (vcl forms).
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter