Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2011, 16:05   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
Смех Инициализация DirectX

Решил я всё-таки освоить DirectX 9. Вот пишу код инициализации:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Direct3D9, AppEvnts;

type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Minimize(Sender: TObject);
    procedure ApplicationEvents1Restore(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    DirectX: IDirect3D9; 
    DirectXDevice: IDirect3DDevice9;  
    DirectXisActive: Boolean; 
    Function InitDirectX: HResult;  
    Procedure FreeDirectX; 
    Function ClearDevice: HResult; 
    Function Render: HResult;  
  end;

var
  Form1: TForm1;
  Window: Boolean;

implementation

{$R *.dfm}

Function TForm1.InitDirectX: HResult;
Var
    d3dInfo: TD3DDisplayMode;
    d3dParams: TD3DPresentParameters;
Begin
      Result:=E_FAIL;
      DirectX:=Direct3DCreate9(D3D_SDK_VERSION);
      If DirectX = nil Then Exit;
      Result:=DirectX.GetAdapterDisplayMode(D3DADAPTER_DEFAULT,d3dInfo);
      If Failed(Result) Then Exit;
      ZeroMemory(@d3dParams,SizeOf(d3dParams));
      d3dParams.Windowed:=Window;
      d3dParams.SwapEffect:=D3DSWAPEFFECT_DISCARD;
      d3dParams.BackBufferFormat:=d3dInfo.Format;
      If Not Window Then
      Begin
            d3dParams.FullScreen_RefreshRateInHz:=d3dInfo.RefreshRate;
            d3dParams.BackBufferWidth:=d3dInfo.Width;
            d3dParams.BackBufferHeight:=d3dInfo.Height;
            Form1.BorderStyle:=bsNone;
      End
      Else
      Begin
            Form1.BorderStyle:=bsSingle;
      End;
      Result:=DirectX.CreateDevice(D3DADAPTER_DEfAULT,D3DDEVTYPE_HAL,Handle,
                                    D3DCREATE_HARDWARE_VERTEXPROCESSING,
                                    @d3dParams,DirectXDevice);
End;

Procedure TForm1.FreeDirectX;
Begin
      DirectX:=nil;
      DirectXDevice:=nil;
End;

Function TForm1.ClearDevice : HResult;
Begin
      Result:=E_FAIL;
      If DirectXDevice = Nil Then Exit;
      Result:=DirectXDevice.Clear(0,nil,D3DCLEAR_TARGET,
                                  D3DCOLOR_XRGB($FF,0,$FF),1,0);
End;

Function TForm1.Render : HResult;
Begin
      Result:=ClearDevice;
      If Failed(Result) Then Exit;
      DirectXDevice.Present(nil,nil,0,nil);
End;


procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
      DirectXisActive:=False;
end;

procedure TForm1.ApplicationEvents1Restore(Sender: TObject);
begin
      DirectXisActive:=True;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
      DirectXisActive:=True;
end;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
      If DirectXisActive Then
      Begin
            Render;
      End;
      Done:=False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
      Window:=True;
       If Failed(InitDirectX) Then Halt;
end;

end.
Однако, как только я пытаюсь запустить данное приложение, ESET NOD32 выдаёт, что Project1 - Win32-Induc virus, и отправляет его для анализа в лабораторию ESET! Ничего не понимаю, что здесь такого страшного?

Последний раз редактировалось _-Re@l-_; 07.02.2011 в 16:08.
_-Re@l-_ вне форума Ответить с цитированием
Старый 07.02.2011, 16:33   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Ну так подожди, что тебе из лаборатории ESET ответят )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 07.02.2011, 16:38   #3
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Лечи свою среду.
http://www.programmersforum.ru/showthread.php?t=60120
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инициализация Aleksey1989 Общие вопросы Delphi 10 11.09.2010 21:50
Инициализация Directx 3d 4erk Win Api 9 30.06.2010 00:29
Меню, инициализация Krumyura Общие вопросы C/C++ 4 22.03.2010 18:14
Инициализация Krumyura Общие вопросы C/C++ 5 20.03.2010 23:37
Инициализация DirectX Pedro Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 30.09.2009 21:06