Отправляет email-рассылки с помощью сервиса Sendsay

Как заработать в интернет

  Все выпуски  

От идеи до игры Выпуск 3


От идеи до игры

Выпуск 3

Приветствую всех подписчиков! И сразу хотелось бы ответить на самый частый вопрос «где можно взять уже вышедшие выпуски рассылки?». Взять их можно в архиве рассылки, вот ссылка http://subscribe.ru/archive/comp.games.270985/

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

Пример использования маски для текстуры:

var
// Переменная, которая будут хранить идентификатор текстуры
Texture : PTexture;

// Инициализация, можно например, загрузить настройки игры
procedure Init;
Begin
// Загрузка маски текстуры
Tex_LoadMaskFromFile( 'Mask.bmp' );
// Загружаем текстуру.
//ВНИМАНИЕ: Размеры маски и текстуры должны совпадать! Иначе ваша игра не будет работать
Texture := Tex_LoadFromFile( 'Texture01.bmp', -1,
TEX_DEFAULT_2D or TEX_USEMASK ); // Добавляя флаг TEX_USEMASK движок будет использовать последнюю загруженную маску

// Перед загрузкой другой маски текстуры необходимо удалить старую
Tex_FreeMask;
End;

// Отрисовка экрана, здесь думаю объяснять не надо
procedure Draw;
Begin
SSprite_Draw( Texture, 0, 0, 640, 250, 255, 0, FX_DEFAULT );
End;


Tex_LoadMaskFromFile – загружает в память маску текстуры

Tex_LoadFromFile – была описана в прошлом уроке!

Tex_FreeMask – удаляет из памяти последнюю загруженную маску текстуры

SSprite_Draw – так же была описана в прошлом уроке

Т.к. большинство процедур нам уже знакомы, остается объяснить только значение нового флага. Флаг TEX_USE_MASK, который совмещается с остальными через оператор or, указывает что текстура должна загружаться с использованием последней загруженной маски.

Теперь перейдем к наложению эффектов!

За основу возьмем пример, который есть в пакете Omega Engine SDK, находится он в папке demos\Delphi\Основные возможности\02 - Текстуры\02 - Наложение эффектов.

Вот отрывок кода

// Переменные, которые будут хранить идентификаторы текстур
TexGray : PTexture;
TexInvert : PTexture;
TexNormal : PTexture;

procedure Init;
Begin
// Загружаем текстуры
TexGray := Tex_LoadFromFile( '..\..\..\..\Media\BadTexture.jpg', $FFFFFF, TEX_DEFAULT_2D or TEX_GRAYSCALE ); // Конвертация в градации серого через добавление флага TEX_INVERT

TexInvert := Tex_LoadFromFile( '..\..\..\..\Media\BadTexture.jpg', $FFFFFF, TEX_DEFAULT_2D or TEX_INVERT ); // Инвертируем значение цветов через добавление флага TEX_INVERT

TexNormal := Tex_LoadFromFile( '..\..\..\..\Media\BadTexture.jpg', $FFFFFF, TEX_DEFAULT_2D );
End;

procedure Draw;
Begin
//Чтоб скучно не было рисуем эти текстуры
SSprite_Draw( TexGray, 400 - 190, 300 - 45, 120, 90, 255, 0, FX_DEFAULT );
SSprite_Draw( TexInvert, 400 - 60, 300 - 45, 120, 90, 255, 0, FX_DEFAULT );
SSprite_Draw( TexNormal, 400 + 60, 300 - 45, 120, 90, 255, 0, FX_DEFAULT );
End;

В этом коде нам все знакомо за исключением некоторых новых флагов, это:

TEX_GRAYSCALE – делает текстуру черно-белой, точнее вся текстура состоит из оттенков серого

TEX_INVERT – инвертирует цвета (негатив фотографии)

Вот и все, друзья! Если есть вопросы пишите rain.zero@mail.ru или заходите на сайт нашей команды http://megames.hut2.ru/

До следующей недели!

Рассылки Subscribe.Ru

От идеи до игры


В избранное