DarkWraith
две картинки A и B. Их bounding rect'ы выделены соотв. рамкой. Полупрозрачный красный прямоугольник R - это область пересечения картинок. Т.к. картинки с альфой, то пересечение их bb не означает пересечение изображений. Чтобы определить коллизию с учетом прозрачности, в области R делай логическое умножение альфа каналов из изображения A и B (через and, &) попиксельно и суммируй. Если sum > 0, то изображения пересеклись. Если твои изображения могут быть повернуты на любой угол - не много сложнее получается, но принцип тот же
Вот с поворотом любым поподробнее можно? :)
DarkWraith
> Вот с поворотом любым поподробнее можно? :)
Ну с поворотом надо брать не просто пикселы по (x, y), а с повернутыми. Поворачивать матрицей 2х2 можно. Только вот область там уже не прямоугольная будет. Тут надо думать :)
Доброго времени суток. Я решил не создавать новую тему, т.к. вся суть отражена в названии этой :)
Не подскажите, как можно реализовать некий "color overlay" текстурированного полигона (спрайта) без трафаретов и дополнительных текстур?
По сути это будет выглядеть как абсолютно белая текстура, альфа каждого пикселя которой повторяет альфу соответствующего пикселя основной текстуры, и которая накладывается поверх этой самой основной текстуры с вызовом glColor.
Например, glColor(1, 0, 0, 0.5) перед наложением белой текстуры даст нам наполовину "покрасневшую текстуру".
Тема в архиве.