PMG

Форумы по созданию игр
Текущее время: 26 июл 2026 07:25

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Смешивание урок 9
СообщениеДобавлено: 08 июн 2008 22:52 
Не в сети
Любитель

Зарегистрирован: 08 июн 2008 22:37
Сообщения: 18
Откуда: Питер
Привет всем форумчанам PMG и лично :clap: MagicWolf-у и NetLib-у!!!!
Начал изучать OpenGL по NeHe и возник вопрос.
Почему если включить смешивание:
Код:
glBlendFunc(GL_SRC_ALPHA,GL_ONE);      
glEnable(GL_BLEND);

черный фон звезды не будет отображаться?

Авторы уроков обьясняют преобразования по порядку, но ведь преобразования в OpenGl производяться в обратном?
Или они имеют ввиду преобразования системы координат?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смешивание урок 9
СообщениеДобавлено: 09 июн 2008 09:21 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Maxi_daxi писал(а):
Почему если включить смешивание:
Код:
glBlendFunc(GL_SRC_ALPHA,GL_ONE);      
glEnable(GL_BLEND);

черный фон звезды не будет отображаться?


В каком смысле, попробуй отображать не на черном цвете, а не красном.

Maxi_daxi писал(а):
Авторы уроков обьясняют преобразования по порядку, но ведь преобразования в OpenGl производяться в обратном?
Или они имеют ввиду преобразования системы координат?


Да, это координаты, но не смешивание. Смешивание производиться в порядке вывода объектов.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смешивание урок 9
СообщениеДобавлено: 09 июн 2008 11:02 
Не в сети
Любитель

Зарегистрирован: 08 июн 2008 22:37
Сообщения: 18
Откуда: Питер
Я закоментировал
glBlendFunc(GL_SRC_ALPHA,GL_ONE);
glEnable(GL_BLEND);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смешивание урок 9
СообщениеДобавлено: 09 июн 2008 16:30 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
У меня черный фон отображается.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смешивание урок 9
СообщениеДобавлено: 09 июн 2008 16:37 
Не в сети
Любитель

Зарегистрирован: 08 июн 2008 22:37
Сообщения: 18
Откуда: Питер
Да, отображается, но если включить blending фон исчезает.
Вопорос в том как OpenGl это делает и причем тут смешивание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смешивание урок 9
СообщениеДобавлено: 10 июн 2008 08:57 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Maxi_daxi писал(а):
Да, отображается, но если включить blending фон исчезает.
Вопорос в том как OpenGl это делает и причем тут смешивание.


Т.е. урок N8 не достаточно ясный?! Я прав!?

Ну, вообщем смысл тот что есть два пиксела (первый из текстуры, второй с экрана) мы их например складываем и получаем в результате третий пиксел, который и выводим на экран. В принципе мы можем не сложить их, а вычесть, можем умножить, а может мы захотим пропустить их через ряд Фурье!!! :P Вообщем, заранее неизвестно, кто что захочет делать со значениями пикселов (тем более особо рьяные, могут издеваться еще с компонентами цвета, например, оставить только R, или сложить R1+G2, ну вообщем дикая фантазия безгранична). Впрочем, для начала для сугреву, надо посмотреть какие уравнения модификации пикселов заложили разработчики OGL. Они как раз задаются glBlendFunc и их не много. Первый параметр sfactor - коэффициент цвета из текстуры, а dfactor - с экрана. GL_SRC_ALPHA - каждый компонент умножается на прозрачность цвета текстуры. GL_ONE - умножение на 1, т.е. без изменения. Так текстура star.bmp - это просто слой прозрачности, а 0 - в ней это полная прозрачность, то вроде остальное должно быть понятно.

Тоже самое еще делают, но круче - текстурные комбайны, и пиксельные шейдеры.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смешивание урок 9
СообщениеДобавлено: 10 июн 2008 11:50 
Не в сети
Любитель

Зарегистрирован: 08 июн 2008 22:37
Сообщения: 18
Откуда: Питер
MajicWolf:
Цитата:
Т.е. урок N8 не достаточно ясный?! Я прав!?

Столкнулся с Blending-ом впервые на уроках NeHe, и когда увидел формулу смешивания, подумал что Rs - это R*s...
С помощью ссылки вашего сайта на RedBook(6 глава) понял формулу.
http://www.progz.ru/articles.php?view=56
(Кстати, неплохо было бы ее добавить в урок 8 как комментарий к формуле)

Черный фон исчезал, уступая место зеленому фону, потому что:
Код:
(  0.0 * 1;  0.5 * 1;  0.0 * 1) - зеленый фон, приемник, домножение на коэффициент 1 - из-за GL_ONE
    +          +          +   = (0;0.5;0) - тот же зеленый фон - прикольная тема этот blending!
(  0.0    ;  0.0    ;  0.0    ) - черный фон текстуры Star.bmp, источник, неважно какой коэффициент, все равно будет (0;0;0) 


Ожидаемо glBlendFunc(GL_ONE, GL_ONE) дает тот же результат, что и glBlendFunc(GL_SRC_ALPHA, GL_ONE)
(тот же результат в том смысле что черный фон текстуры исчезает в обоих случаях,
но смешивание поверхности текстуры НЕ черной с фоном различается)
MajicWolf:
Цитата:
Первый параметр sfactor - коэффициент цвета из текстуры, а dfactor - с экрана.


Как вы определяете alpha у текстуры?


Последний раз редактировалось Maxi_daxi 30 июн 2008 09:52, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смешивание урок 9
СообщениеДобавлено: 10 июн 2008 13:19 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Как правило прозрачность задается отдельной картинкой, или есть форматы файлов, в которых ее можно хранить вместе rgb (tga). Ну а так картинка в градициях серого ...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB