Итак, сегодня мы начнем небольшой цикл статей по базовым вопросам Quad Engine.
Статьи будут короткими, лаконичными и понятными, как и сам движок, но при этом крутыми и мощными, опять же как он. Среда работы - Delphi.
Тема № 1: Подключение движка и базовые функции.
Помимо собственно среды для Delphi нам понадобится QuadEngine.dll, файл с описанием интерфейсов – QuadEngine.pas и заголовочные файлы DirectX
Динамическая библиотека ложится рядом с исполняемым файлом, а заголовки подключаются к проекту.
Cоздадим стандартную форму и нарисуем на ней что-нибудь.
Кода будет немного:
//Добавим заголовки движка
uses QuadEngine;
//нам понадобятся интерфейсы устройства, отрисовщика и таймера
var
QuadDevice: IQuadDevice;
Quad: IQuadRender;
Timer: IQuadTimer;
//для таймера нужна специальная процедура - она будет вызываться при срабатывании таймера
procedure OnTimer(out delta: Double); stdcall;
//в процедуре создания формы создаем устройство и отрисовщик
procedure TForm1.FormCreate(Sender: TObject);
begin
QuadDevice:= CreateQuadDevice;
QuadDevice.CreateRender(Quad);
//для нормальной работы понадобится handle окна,
//ширина и высота области отрисовки
//и дополнительные параметры – полноэкранный
//или оконный режим и вести или нет логи.
Quad.Initialize(Form1.Handle,
Form1.ClientWidth, Form1.ClientHeight, False);
//все, можно рисовать, рисовать мы будем в таймере
//создаем таймер, указываем его параметры и запускаем
QuadDevice.CreateTimer(Timer);
Timer.SetCallBack(OnTimer);
Timer.SetInterval(5);
Timer.SetState(True);
end;
//рисовать будем в реализации процедуры таймера
//очистим экран черным и нарисуем прямоугольничек:)
procedure OnTimer(out delta: Double); stdcall;
begin
Quad.BeginRender;
Quad.Clear(RGB(0, 0, 0));
Quad.Rectangle(100, 100, 200, 200, RGBA(255, 255, 0, 50));
Quad.EndRender;
end;
Пример
Конечно никто не запрещает использовать обычный таймер.
Цвета можно задать и восмизначным шестнадцатеричным числом. Первый байт - прозрачность, остальные - цвет в RGB формате.
Собственно все, можно пойти и наградить себя чашкой кофе. Правда получается вот такая простецкая вещь, но на то он и первый урок:
Привет Автор! Я начинающий. У меня вопрос, как установить этот игровой движок на Delphi? Скачал Delphi 7, а что дальше не знаю.
ОтветитьУдалитьДобрый день! Для установки, если это так можно назвать, необходимо скопировать qei.dll в папку с ЕХЕ файлом, а все заголовочные файлы положить рядом с проектом.
ОтветитьУдалитьСамый простой вариант для этого - скачать архив, прилагающийся к этому примеру.
Также кране рекомендую обновить версию делфи до 2009 или выше, так как есть доля вероятности, что более новые версии движка не будут поддерживать такие старые IDE как Delphi7.
Большое спасибо!
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьУвы финальная никак не выпускается, постоянно находится что-то, что хочется доделать. Однако, скачать версию 0.4 вполне можно с этим уроком, она (разумеется) идет в комплекте.
ОтветитьУдалитьА почему иногда при закрытии программы возникает ошибка
ОтветитьУдалить---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
69 - 76 bytes: TTimerThread x 1
Это утечка памяти, причем, если там написано про таймер - это ошибка движка. Если там указаны другие строки - это ваша ошибка, ее желательно найти(не обнулен интерфейс или не уничтожен класс).
ОтветитьУдалитьА вообще это случайность, автор оставил в используемой версии вывод дебажных данных, надо просить у него более свежую версию.
Этот комментарий был удален автором.
ОтветитьУдалитьА кто-то может описать как сделать то же самое на C#. А то вот я не хочу даже притрагиваться к делфи)
ОтветитьУдалитьМне хотя бы что касается интерфейсов.
Добрый день. Сразу извиняюсь за долгий ответ, был вне сети неделю.
ОтветитьУдалитьВ C# всё делается практически точно так же. Отличия только в заголовочном файле (он прилагается и для C#) и языковых различиях.
>>Мне хотя бы что касается интерфейсов.
Вот тут я немного не понял вопроса. Можете пояснить?