Сообщение от 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, но тени просто полностью пропали(( опять я чето перепутал)