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

Delphi Sources



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

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

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

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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, время: 01:54.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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