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

опять появились проблемы с тенями. Раньше каждая текстура хранилась в отдельном файле, и все работало без проблем. Теперь я использую для вывода level один файл с несколькими текстурами-появились глюки:
то иень периодически пропадает, то пооявляется. В трафарет помимо level_draw я добавил еще наземных юнитов enemy_groumd_Draw. Так вот они стали тоже "моргать".

//цвета теней не смешиваються!!! работает с глюками при выводе уровня из 1 текстуры
      glEnable(GL_STENCIL_TEST);//включаем трафарет
      glStencilFunc(GL_ALWAYS, 1, 255);//в том месте где рисуется трафарет значение буфера заменяем на 1
      glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
      glEnable(GL_ALPHA_TEST);      //надо отсечь рисования прозрачных пикселей уровня
      glAlphaFunc(GL_GREATER,0.5f); //выводим только те пиксели уровня у которых alpha > 0.5f
        level_draw();//уровень является трафаретом-только на нем видна тень
    //    enemy_ground_draw();//тоже трафарет
      glStencilFunc(GL_EQUAL, 1, 255);// тень будет рисоваться только в тех местах,где значение в буфере 1
      glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO);
      glAlphaFunc(GL_GREATER,0.45f); //выводим только те пиксели тени у которых alpha > 0.45f
        player_shadow_draw();
        enemy_air_shadow_draw();
      glDisable(GL_ALPHA_TEST);
      glDisable(GL_STENCIL_TEST);//отключаем трафарет
чето гдето нето чтото с альфой?
(Offline)
 
Ответить с цитированием