Я работаю над программой, которая включает в себя рисование очень простых перекрывающихся теней. В тени нет ничего необычного: у них твердые края и есть бесконечный источник света (т. Е. Все тени параллельны). Уникальный аспект заключается в том, что тени представляют области частично поглощенный свет, и так много многих теней могут перекрываться, чтобы сделать постепенно более темные области.Рисование много перекрывающихся 2D-теней
Вот изображение, чтобы проиллюстрировать идею:
Мой вопрос заключается в следующем: Что бы хороший способ взять тени в моей программе (хранится в виде выпуклых четырехугольников) и эффективно рисовать их на экран?
Я могу просто нарисовать их все с соответствующими альфа-значениями, и результат будет выглядеть хорошо, но при этом может быть ужасно медленным. Я думаю, это потому, что пиксели, которые находятся во многих тенях, нарисованы много раз. Я подозреваю, что подход, который только рисует каждый пиксель, может быть намного быстрее.
Моя программа находится на C++, и я использую Qt для создания пользовательского интерфейса и чертежа. Я был бы рад использовать библиотеку для обрезки полигонов или что-то в этом роде (например, Clipper или boost), но я бы не захотел погрузиться в мир OpenGL/GPU (если нет особо безболезненного способа сделать это).
Любые идеи? Благодаря!
Ах, спасибо! Кажется теперь гораздо проще думать об этом с точки зрения пикселей, а не с точки зрения теневых полигонов. Я попытаюсь реализовать это, и я подозреваю, что производительность значительно возрастет. Если он достаточно быстр, я бы даже попробовал бы суперсэмплинг пикселей для бит сглаживания. – rrwick
@rrwick: Добро пожаловать. Удачи с кодом. Поделитесь результатом, если это возможно. – neuro