Добрый день, моя дорогая община.
Я работаю над динамическими тенями для игры, над которой я буду работать, но, как это обычно бывает, я доставляю вам проблему в надежде (я уверен, на самом деле), что кто-то поможет.
Вот где я сейчас нахожусь:
Обратите внимание на красный квадрат, я хочу, чтобы он постепенно угасал, когда источник света исчезает из поля зрения. Я проверяю, находится ли точка многоугольника внутри радиуса круга, но это, конечно, не решает; как я уже сказал, я хочу, чтобы он постепенно угасал, пока не погас полностью, если свет слишком далеко.
В моей голове есть одна идея, но я надеюсь на лучшую. Я не буду говорить об этом, так как это действительно последний вариант, и я считаю, что это техника "грубой силы".
Вот как я передаю свой свет:
glBegin(GL_TRIANGLE_FAN);
{
Graphics::Instance()->SetColor(r_,g_,b_,intensity_);
glVertex2f(posX_,posY_);
glColor4f(0.f, 0.f, 0.f, 0.0f);
for (angle_=0.0; angle_<=3.14159265*2; angle_+=((3.14159265*2)/64.0f) )
{
glVertex2f(range_*(float)cos(angle_) + posX_,
range_*(float)sin(angle_) + posY_);
}
glVertex2f(posX_+range_, posY_);
}
И вот как я это смешал:
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
l0->Render();
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
l0->ProjectShadow(*mmm);
l0->ProjectShadow(*bb);
Это все. Если я не прояснил себя или если я пропустил опубликовать соответствующий код, пожалуйста, скажите об этом и не понижайте голос.