Я пишу простую гоночную игру. Пытаясь добавить тени в мою сцену, рисуя черные прозрачные многоугольники, я обнаружил, что застрял в странной проблеме.
Когда тени нарисованы на горизонтальных поверхностях, когда я смотрю на них издалека, я могу видеть сквозь поверхности, как будто они были прозрачными.
void PolyShadow::Draw(){
glColor4f(0,0,0,0.5f);
glEnable (GL_BLEND);
glBlendFunc (GL_DST_COLOR,GL_ONE_MINUS_SRC_ALPHA);
this->drawShadow();
glDisable (GL_BLEND);
shadow_initialized = true;
}
Чтобы избежать конфликтов, я назначаю любому объекту, проецирующему тени, другой shadow_offset и выполняю этот вызов перед рисованием тени
glEnable(GL_POLYGON_OFFSET_FILL);
//call to object.drawShadows()
glDisable(GL_POLYGON_OFFSET_FILL);
И
void Object::drawShadows(){
glPolygonOffset(-1.0-shadow_offset,-1.0-shadow_offset);
//Draw shadow
}
Я тоже пробовал с
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
но ничего не изменилось.
Заранее спасибо