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
