Показать сообщение отдельно
Старый 08.09.2009, 23:35   #10
aureli0
ПроЭктировщик
 
Регистрация: 19.03.2007
Сообщений: 134
Написано 10 полезных сообщений
(для 20 пользователей)
Re: Ответ: 2d в OpenGL. вывод тени от спрайта

Сообщение от jimon Посмотреть сообщение
aureli0
так приделай еще альфа тест для теней тоже с каким нибудь условием что если альфа = 0 то не рисовать пиксель
эт я понял только опять же какие параметры давать в glAlphaFunc?

//цвета теней не смешиваються!!!
      glEnable(GL_STENCIL_TEST);//включаем трафарет
      //мы в любом случае будем писать в трафарет
      glStencilFunc(GL_ALWAYS, 1, 255);
      //в том месте где рисуется трафарет значение буфера заменяем на 1
      glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);

      level_draw();//уровень является трафаретом-только на нем видна тень

      // тень будет рисоваться только в тех местах,где значение в буфере 1
      glStencilFunc(GL_EQUAL, 1, 255);
      glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_EQUAL,1);//выводить тени только на видимых пикселях с альфа 1
      player_shadow_draw();
      enemy_air_shadow_draw();
glDisable(GL_ALPHA_TEST);
      glDisable(GL_STENCIL_TEST);//отключаем трафарет
по идее тени должны рисоваться только на пикселях с альфа=1, но тени просто полностью пропали(( опять я чето перепутал)

Последний раз редактировалось aureli0, 08.09.2009 в 23:41.
(Offline)
 
Ответить с цитированием