|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.02.2011, 13:11 | #1 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
цветовой ключ vs альфа-канал
Переводя книжку "Programming Linux Games", а затем и рассматривая листинги кодов, описанных в книге (их надо скачать с сайта книги), я не раз задавался вопросом, каким методом лучше программировать графический движок так, чтобы какие-либо участки на спрайтах не отображались в процессе отрисовки. Используется библиотека SDL.
Первый способ - это цветовой ключ (color keying), и только он подходит для обработки .bmp. Второй способ - а если я использую формат .png? Там есть свой альфа-канал, и достаточно просто инициализировать его для нужных поверхностей и забыть о цветовом ключе вообще. И всё же мне не даёт покоя одна вещь. Во-первых, чтобы обработка графики шла быстрее, можно использовать функцию SDL_DisplayFormat(SDL_Surface* surf), но она "убивает" альфа-канал на поверхностях. А я хочу отбить себе как можно больше производительности. И это повод для второго объекта моего беспокойства: так что же даёт меньше нагрузки - альфа-канал или цветовой ключ? В конце концов, хоть я ещё и не пробовал, но наверняка цветовой ключ подходит и к формату .png. |
01.02.2011, 14:03 | #2 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
01.02.2011, 14:58 | #3 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Нет, вы неправильно поняли. Я знаю обе функции, и как ими пользоваться (и пользовался неоднократно): SDL_SetColorKey(SDL_Surface* surf, int flags, int colorkey) и SDL_SetAlpha(SDL_Surface* surface, int flags, int alpha). Вопрос в том, что потребляет меньше ресурсов.
|
01.02.2011, 15:11 | #4 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
01.02.2011, 16:28 | #5 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Что ж, скорее всего, это действительно так. Альфа-эффект оставлю для спецэффектов. Кстати, кто-нибудь пробовал colorkey на поверхности, куда было загружено изображение формата .png? Именно с использованием SDL.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Добавить точечному рисунку альфа канал, что бы рисунок воспринимался функцией AlphaBlend | Son | Мультимедиа в Delphi | 3 | 11.02.2010 16:46 |
Как поместить в компонент ImageList иконки 32бит + Альфа Канал? | KyzDmitry | Компоненты Delphi | 1 | 04.07.2009 15:48 |
цветовой ключ на WinApi ? | Ulex | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 11.05.2009 17:30 |
Альфа-канал | NeiL | Мультимедиа в Delphi | 1 | 28.02.2008 15:33 |
GDI+ и альфа канал в Delphi for Win32 | murtix | Мультимедиа в Delphi | 2 | 06.10.2007 00:09 |