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

  // Значение, которым будет заполняться буфер стенсила при его очистке
  glClearStencil(0);//значение фона буфера стенсила фона
  glStencilMask(0xFF);//Определяем, какие биты могут писаться в стенсил буфер
  //Очищаем экран перед рисованием и буфер стенсила
  glClear( GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);// Очищаем все буферы

рисуем задник

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

А как сделать чтобы тени еще не выводились на дырах(альфа канал) в спрайтах?
(Offline)
 
Ответить с цитированием