В данном разделе вы можете получить расширенную справку по всем функциям Perfect Engine. Все материалы раздела удобно поделены на категории в соответствии со структурой движка.


ОПИСАНИЕ

PERFECT ENGINE.PAS
          класс TCamera
          класс TPerfectEngine

peRENDER_CANVAS.PAS
          класс TJPEGBitmap
peRENDER_OPENGL.PAS

peROUTINE.PAS

SaiLight@mail.ru   

vk.com/sailight

{nosearch}Здравствуйте! На данном сайте команда Perfect Light рада представить вам свою разработку - графический движок Perfect Engine, а в текущей статье будут описаны его основные особенности. Perfect Engine - это простой движок, написанный на Delphi (ООП) и распространяемый с открытым исходным кодом. Ориентирован, в первую очередь, на обучение начинающих программистов, но вполне подойдет и более опытным разработчикам в качестве инструмента, помогающего значительно облегчить и ускорить процесс разработки графических приложений.

 

Со структурой движка вы можете ознакомиться в меню выше, там же - и получить основную информацию по каждой из его функций.

ПРОСТОТА:

Основная идея Perfect Engine - в полной независимости от конкретной библиотеки вывода (рендера). Движок берет на себя все предварительные расчеты в то время, как рендер, идущий в комплекте в виде отдельного модуля, занимается лишь выводом финального изображения в память и на экран.

 

Быстрый старт при работе с движком - это всего 2 строки, которые вам необходимо ввести, чтобы на экране начали появляться необходимые вам объекты:

 

vEngine := peRenderInitialize(Handle, Width, Height);
vEngine.onDraw := pDraw;

 

Функция peRenderInitialize(), входящая в состав каждого из имеющихся рендеров, создает и возвращает объект движка (TPerfectEngine) и назначает ему для вывода все имеющиеся внутри себя функции. За счет этого и достигается независимость движка от рендера - используя только назначенные рендером функции, движок пользуется предоставленными ему возможностями и не заботится о том, как они устроены.

 

Таким образом, практически идентичный код программы может выдавать два совершенно разных изображения на двух разных рендерах, - используя все возможности видеокарты на OpenGL-рендере или же ограничиваясь возможностями GDI-вывода на WinAPI, а не поддерживаемые рендером функции будут просто игнорироваться...

 

Вторая же строка в представленном примере просто переназначает событие вывода кадра на указанную процедуру, где и вызываются необходимые вам функции вывода:

 

Procedure pDraw();
begin
vEngine.pDrawRectangle(X, Y, vWidth, vHeight);
vEngine.pDrawFigure(X, Y, R, vCount, vAngle);
end;

УДОБСТВО:

Движок поддерживает множество удобных для использования функций и классов, а его структура проработана специально с учетом удобства конечного пользователя. Зачастую это достигается длинными и неудобными в использовании функциями рендера, впрочем, конечного пользователя эти ограничения никак не касаются. Но удобство Perfect Engine не ограничивается лишь возможностью быстрого старта - это, прежде всего, и некоторый набор дополнительных функций, значительно упрощающих разработку графических приложений с его использованием:

 

- Класс TCamera

Простая в использовании реализация камеры, для включения которой необходимо лишь назначить True соответствующему свойству движка. Управляется свойством Camera и поддерживает некоторую функциональность, показанную в демонстрационных примерах движка. В данный момент умеет плавно или резко перемещаться к указанной цели и покачиваться с заданной амплитудой.

 

- Хранилище текстур

Каждая текстура, загруженная в память с использованием соответствующей функции, помещается в некоторый массив - хранилище текстур, и автоматически удаляется оттуда при необходимости. Доступ к массиву осуществляется свойством Texture[i] и позволяет получить все необходимые данные о соответствующей текстуре - от ее размера до имени и количества кадров анимации.

 

- Поддержка анимации

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

 

- Встроенный таймер

Вам необходимо лишь переназначить стандартное событие вывода кадра - все записанные в нем функции автоматически будут вызываться во встроенном таймере. Никаких дополнительных буферов и заполнений экрана - все это движок делает за вас полностью автоматически.

 

- Любые шрифты

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

 

Perfect Engine заботится и об этом: вы можете загрузить и использовать любой шрифт в формате .ttf, хранящийся в папке с программой, и движок автоматически начнет работу с ним. Для OpenGL же это означает автоматическую генерацию необходимых шрифтовых текстур прямо в памяти!

 

- Дополнительные утилиты

Для хранения данных о цвете движок использует собственный формат TAlphaColor, где в четырехбайтовом числовом значении хранятся RGBA-параметры цвета. Упрощая задачу выбора цвета, мы разработали удобную цветовую палитру Perfect Palette, входящую в набор вспомогательных утилит движка.

 

Perfect Light Design Project, 2015