Понидилок
Андрей
Учим DelphiX
ВВЕДЕНИЕ
Приветствую, ученик. Ты
наверное не раз писал
какие-нибудь игрульки на
Delphi. Что тебе мешало, если в
игре было слишком много
графики или игровое поле
было огромных размеров?
Правильно - тормоза, не те,
что в голове, а те, что
заставляют игру быть
медленнее, чем ты хотел.
Есть
несколько способов от
этого избавиться. Первый -
вырезать все излишки
графики. Второй - получить
доступ к видео памяти, но
это у тебя не получится.
Третий - использовать Delphi X,
который сделает все за
тебя. Тебе лишь останется
писать игру, как с обычным
canvas'ом.
Как
установить? Легко. Качаете
арихив с Delphi X из
интернета(например, есть
на сайте DelphiGFX) Распаковываете
его. Затем заходите в папку
...\BIN\ И запускаете файл
install_for(?).exe, где (?) - номер
вашей версии Delphi.
Запускаете Дельфу. И там,
где у вас различные
компоненты (типа, Standard или
Win32) есть и DelphiX. Он
находится в самом конце
списка, но вы можете легко
перенести его вперед,
нажав на properties.
Все готово
для работы, приступим.
УРОК
1
Запускаем
Delphi и создаем новое
приложение File=>New application
Сворачиваем форму (Form1) и
делаем следующие
изменения:
Как
было:
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
Как
надо:
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, DXClass;
type
TForm1 = class(TDXForm)
private
{ Private declarations }
public
{ Public declarations }
end;
Это
поможет нам избезать
ошибок, которые могут
возникнуть при работе
компонентов DelphiX с TForm.
Теперь создадим поле для
рисования. Это компонент
DXDraw. Находим его, как на
рисунке.
Ставим его
на форму. Размером 640х480 или
как вам больше нравится.
Меняем свойство Align на
AlClient, Deisplay.BitCount с 8 на 16 или
32. И там же cтавим наше
разрешение в пунктах Height =
640, Width = 480. Изменим имя (name)
на DXDraw без 1.
Чтобы
изображение каждый раз
менялось, а не было похоже
на картину "Застывший от
Ужаса в сортире", ставим
DXTimer. Вот он:
Ставим
параметр Interval на 0, а enabled на
false. Теперь изменим события
(Events) DXDraw. OnInitialize: пишем там
DXTimer1.Enabled
:= True; //включаем
таймер
А в
событии OnFinalize пишем
DXTimer1.Enabled
:= false; //выключаем
таймер
Теперь переходим
непосредственно к
отрисовке. В событии DXTimer'а
- OnTime пишем
if not
DXDraw.CanDraw then exit; // Если система
не может найти DirectX, то
выходим
DXDraw.Surface.Fill(0);
//
Заполняем всё черным, т.е.
очищаем экран
Здесь мы можем рисовать
линии, точки и т.д. а так же
выводить текст.
with
DXDraw.Surface.Canvas do // на канве DXDraw
делаем чего - нить
begin
Brush.Style := bsClear; // Задаем стиль
кисти
Font.Color :=
clWhite; //
Цвет текста - белый
Font.Size :=
20; //
Размер шрифта
Textout(30,
30, 'Hello World'); // Выводим
легендарную фразу
Release; // реализуем
end; // заканчиваем
работу с поверхностью
DXDraw.Flip; // "тик" DDraw
Теперь сделаем быстрых
выход из программы и
переход в полноэкранный
режим.
У
формы изменяем свойство
KeyPreview на true. В событии
формы OnKeyDown пишем:
Выход
из программы
if Key=VK_ESCAPE
then
Close;
Меняем режим экрана по
Alt+Enter
if (ssAlt in
Shift) and (Key=VK_RETURN) then
begin
DXDraw.Finalize;
if doFullScreen in DXDraw.Options then
begin
RestoreWindow;
DXDraw.Cursor := crDefault;
BorderStyle := bsSizeable;
DXDraw.Options := DXDraw.Options -
[doFullScreen];
end else
begin
StoreWindow;
DXDraw.Cursor := crNone;
BorderStyle := bsNone;
DXDraw.Options := DXDraw.Options +
[doFullScreen];
end;
DXDraw.Initialize;
end;
Вот
и всё. Мы создали бланк
приложений с DelphiX.
Сохраните и создайте
резервную копию.
Продолжение
уроков в следующих статьях.
Если возникли какие-нибудь
вопросы, то пишите...
-
|