Andorra 2D — графический 2D движок

Графика (2D, 3D)   2 января 2011  Автор статьи: admin 

Anrorra 2d — это двумерный графический движок, с которым можно работать под управлением Delphi, Kylix или Freepascal/Lazarus. Andorra представляет собой простой API для разработки приложений с использованием двухмерной графики. Andorra позволяет использовать как DirectX, так и OpenGL при прорисовке графики, но несмотря на это, знаний их API не требуется. Графический движок Andorra 2d позволяет совместить мощность и гибкость DirectX и OpenGL с простотой и легкостью его применения. Andorra 2d широко используется для разработки компьютерных игр, всвязи с тем, что обладает рядом, необходимых для геймдева, преимуществ:

  • 3D-ускорение, благодаря которому все графические операции обрабатываются, используя при этом аппаратный 3D-ускоритель, значительно повышая производительность.
  • Встроенный мощный спрайтовый движок, который упрощает создание игр.
  • Возможность использования DirectX или OpenGL для прорисовки графики.
  • Простота программного кода.
  • Встроенная система частиц.
  • Возможность подключения физики Newton.
  • Собственная система Canvas.

[note]Официальный сайт Andorra 2d[/note]

На официальном сайте вы также сможете скачать сам движок вместе с демонстрационными исходниками. В этом уроке я покажу, как устанавливать и инициализировать Andorra 2d в Delphi. Начнем конечно же с установки.

Последнюю версию Andorra можно скачать по ссылке.  Из скачанного архива скопируйте папку «src» с библиотеками движка в папку с вашим установленным Delphi, например в “C:\Program Files\Embarcadero\RAD Studio\7.0\lib”, после чего переименуйте папку «src» в «Andorra». После этого добавьте путь к установленным библиотекам в Delphi (обычно это можно сделать перейдя по «Tools/Options/Library Win32» в Delphi). Все, с установкой мы завершили. Теперь расскажу про инициализацию.

Создадим новый проект в Delphi. Для включения Andorra в наш проект, добавим следующие юниты в раздел uses:

  • AdDraws — ядро Andorra 2D, в котором и происходит прорисовка графики
  • AdClasses — содержит типы, классы, различные функции, процедуры и ещё много полезного
  • AdTypes — содержит дополнительные типы и классы

Теперь объявим объект TAdDraw. Он нужен для непосредтвенного взаимодействия с ядром Andorra. Добавим следующий код в раздел public формы:

[cc lang=’delphi’]AdDraw:TAdDraw;[/cc]

Теперь поместим библиотеку от Andorra (AndorraDX93D.dll) в папку с нашим проектом и создадим обработчик события формы OnFormCreate:

[cc lang=’delphi’]procedure TForm1.FormCreate(Sender: TObject);
begin
AdDraw := TAdDraw.Create(self); //создаем ядро
AdDraw.DllName := ‘AndorraDX93D.dll’; //подключаем библиотеку Andorra
if AdDraw.Initialize then
begin
Application.OnIdle := Idle;
end
else
begin
ShowMessage(‘Ошибка инициализации Andorra’);
halt;
end;
end;[/cc]

Создадим событие формы OnDestroy и поместим в него код:

[cc lang=’delphi’]AdDraw.Free;[/cc]

Этот код остановит движок и освободит память.

Теперь вернемся к инициализации (к procedure TForm1.FormCreate). Играм требуется обновлять изображение большое количество раз в секунду. Сначала происходит обсчет графики, игра производит вычисления и только потом выводит всю графику на экран. Эти действия происходят в цикле, который работает непрерывно. При работе с Andorra надо следовать такому же принципу. Роль цикла у нас будет выполнять процедура Idle (Application.OnIdle := Idle). Объявим эту процедуру в разделе public формы:

[cc lang=’delphi’]procedure Idle(Sender:TObject;var Done:boolean);[/cc]

Сама процедура Idle будет такая:

[cc lang=’delphi’]procedure TForm1.Idle(Sender: TObject; var Done: boolean);
begin
if AdDraw.CanDraw then
begin
AdDraw.ClearSurface(clWhite);

AdDraw.BeginScene;

// выведем синий квадрат

addraw.Canvas.Brush.Color:= Ad_ARGB(255,0,0,255);
addraw.Canvas.Rectangle(10,10,50,50);

AdDraw.Canvas.Release;

AdDraw.EndScene;

AdDraw.Flip;
end;
Done := false;
end;
[/cc]

Прокомпилируем полученный код. В результате на  белом фоне будет нарисован синий квадрат. Конечно, нарисовать квадрат можно и без Andorra.

Вот что получилось у меня

В этом уроке я рассказал лишь об инициализации Andorra, а не о ее практическом применении. Более подробно и детально изучить широкие графические возможности Andorra вы сможете при помощи туториала, документации и демонстрационных исходников, которые вы найдете на официальном сайте движка.

  • Dwedwed

    Хороший движок. Отлично подходит для простых 2D игр.

  • Mr.nobody

    Хорошая статья)
    Было бы здорово увидеть урок Andorra+Newton(Физический движок)

  • Mr.nobody

    Хорошая статья)
    Было бы здорово увидеть урок Andorra+Newton(Физический движок)

  • Aleksmakim95

    что такое Delphi

  • Aleksmakim95

    что такое Delphi

  • DENIS

    Cкинь полностью Листинг, ПЛиииз , умоляю, пажалуйста….. мой емеил d_mozhaev@mail.ru

    • dosu90

      Дайте ЛИСТИНГ полностью, кто может пожалуйста….. мой емеил: dosu90@mail.ru

  • DENIS

    Cкинь полностью Листинг, ПЛиииз , умоляю, пажалуйста….. мой емеил d_mozhaev@mail.ru

  • dosu90

    Дайте ЛИСТИНГ полностью, кто может пожалуйста….. мой емеил: dosu90@mail.ru

  • ARTEM

    Cкиньте этот исходник-(синий квадрат) Плиииз, кто может умоляю………Мне очень надо, помогите, мой емеил- odinokiyart@mail.ru

  • ARTEM

    Cкиньте этот исходник-(синий квадрат) Плиииз, кто может умоляю………Мне очень надо, помогите, мой емеил- odinokiyart@mail.ru

  • Sergeybagr

    Отличный пример, теперь главное создание кода без утечки памяти и нормальное количество обновлений в секунду.
    То есть работающий таймер с периодом 20-30 раз / сек и красивая функция вывода необходимой графической информации на форму =)

  • Вадим

    А можно ли поставить это как фон(чтобы кнопки, надписи и т. п. были поверх того, что этот движок будет рисовать)? Например в GLScene кнопки видны, но надписи Label нет…

Научиться программировать

  • на Delphi

  • на Java

  • на C++