получилось вот таким образом, но тени смешиваются,как это исправить?
// Значение, которым будет заполняться буфер стенсила при его очистке
glClearStencil(0);//значение фона буфера стенсила фона
glStencilMask(0xFF);//Определяем, какие биты могут писаться в стенсил буфер
glClear( GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);// Очищаем все буферы
//Задний фон
glColor4f(1,1,1,1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,background_texture);
DrawTXT(win_DX/2,win_DY/2,win_DX,win_DY,0,1);
level_draw();
enemy_ground_draw();//рисование и анимация наземных врагов
starwind_draw();
glEnable(GL_STENCIL_TEST);//включаем трафарет
//определяем область где тень рисуется
glStencilFunc(GL_NEVER, 1, 0);
//в том месте где рисуется трафарет значение буфера заменяем на 1
glStencilOp(GL_REPLACE, GL_KEEP, GL_KEEP);
level_draw();//уровень является трафаретом-только на нем видна тень
// тень будет рисоваться только в тех местах,где значение в буфере 1
glStencilFunc(GL_EQUAL, 1, 255);
player_shadow_draw();
enemy_air_shadow_draw();
glDisable(GL_STENCIL_TEST);//отключаем трафарет
enemy_air_draw();//рисование и анимация летающих врагов
enemy_blast_draw();//рисуем патрон врага
player_draw();//Рисуем корабль игрока
player_ammo_draw();//Рисуем патрон игрока
effect_draw();