SDL SetAlpha

Материал из Википедии - свободной энциклопедии.

Перейти к: навигация, поиск

Корректирует парамерты альфа-компонента поверхности

Содержание

Имя

SDL_SetAlpha - Корректирует парамерты альфа-компонента поверхности

Прототип

  #include "SDL.h"
  int SDL_SetAlpha(SDL_Surface *surface, Uint32 flags, Uint8 alpha);

Описание

Замечание: Эта функция и семантика альфа-смешения в SDL была изменена с версии 1.1.4. До версии 1.1.5 альфа-значение 0 считалось непрозрачным, а 255 - прозрачным. Теперь же наоборот: 0 (SDL_ALPHA_TRANSPARENT) - это прозрачность, а 255 (SDL_ALPHA_OPAQUE) - непрозрачность.

SDL_SetAlpha используется для установки альфа-значения поверхности и наличия/отсутствия альфа-смешения.

Параметр surface определяет поверхность, альфа-атрибуты которой вы будете корректировать. Параметр alpha определяет будет ли использоваться альфа-смешение (SDL_SRCALPHA) и будет ли присутствовать RLE-ускорение при переносе (bliting) поверхности (SDL_RLEACCEL). flags может быть равен 0, одному или OR-комбинации из двух значений. Если флаг SDL_SRCALPHA не установлен, то альфа-информация будет игнорироваться при копировании. alpha это определенная для поверхности переменная. Поверхность может не иметь альфа-канала для прозрачности и перенос может использовать RLE-ускорение при установке флага SDL_RLEACCEL.

Замечание: Альфа-переменная поверхности выбирается из 128 заранее определенных значений и оптимизирована так, чтобы к ней был более быстрый доступ, чем к остальным переменным, связанным с поверхностью.

Альфа-эффект поверхности переносится следующими способами:

RGBA->RGB с SDL_SRCALPHA Над исходной поверхностью производится альфа-смешение с приемником используя альфа-канал. SDL_SRCCOLORKEY и альфа-переменная поверхности игнорируются.
RGBA->RGB без SDL_SRCALPHA Данные RGB копируются из источники. Альфа-канал исходной поверхности ее альфа-переменная игнорируются. Если установлен SDL_SRCCOLORKEY, то копируются только пиксели не соответствующие цветовому ключу.
RGB->RGBA с SDL_SRCALPHA Над исходной поверхностью производится альфа-смешение с приемником используя альфа-переменную поверхности. Если установлен SDL_SRCCOLORKEY, то копируются только пиксели не соответствующие цветовому ключу. Альфа-канал копирует пиксели, если они непрозрачны.
RGB->RGBA без SDL_SRCALPHA RGB данные копируются из исходной поверхности и альфа-значение скопированных пикселей устанавливается если они непрозрачны. Если установлен SDL_SRCCOLORKEY, то копируются только пиксели не соответствующие цветовому ключу.
RGBA->RGBA с SDL_SRCALPHA Над исходной поверхностью выполняется альфа-смешение с приемником используя альфа-канал источника. Альфа-канал приемника остается нетронутым. SDL_SRCCOLORKEY игнорируется.
RGBA->RGBA без SDL_SRCALPHA RGB данные копируются в поверхность назначения. Если установлен SDL_SRCCOLORKEY, то копируются только пиксели не соответствующие цветовому ключу.
RGB->RGB с SDL_SRCALPHA Исходная поверхность альфа-смешивается с приемником используя альфа-переменную поверхности. Если установлен SDL_SRCCOLORKEY, то копируются только пиксели не соответствующие цветовому ключу.
RGB->RGB без SDL_SRCALPHA RGB данные копируются из источника. Если установлен SDL_SRCCOLORKEY, то копируются только пиксели не соответствующие цветовому ключу.

Замечание: При копировании принимается во внимание наличие и отсутствие SDL_SRCALPHA только у исходной поверхности, но не у приемника.

Замечание: Заметьте, что при копировании RGBA->RGBA (с установленным SDL_SRCALPHA) сохраняется альфа-канал приемника. Так вы сможете смешать две RGBA поверхности и получить результат, который можно будет исключить из "оверлея"; альфа-канал назначения здесь будет играть роль маски.

Замечание: Также обратите внимание что альфа-значение пикселя и поверхности не могут комбинироваться. Всегда используется альфа-значение пикселя, если оно доступно.

Возвращаемое значение

Функция возвращает 0 или -1, если произошла ошибка.

Смотри также

SDL_MapRGBA, SDL_GetRGBA, SDL_DisplayFormatAlpha, SDL_BlitSurface, SDL_Surface

Просмотры