Ну, смотря для чего. Если это демка, то они все 128кб в наше время. А если игра или интрушка, то там может быть.
А в целом методика такова - в момент прерывания луч находится на 80 линий выше бумаги, если рассматривать вариант Пентагона. Каждую линию он проходит за 224 такта. Стало быть, если ты рисуешь что-то сверху-вниз, то тут очень просто рассчитать. Вычисляешь, за сколько тактов рисуется твой обьект, и смотришь, дошел ли луч до нижней части спрайта за то время, пока рисовался спрайт. Например, спрайт рисуется за 20000 тактов. Это 20000/224 ~ 90 сканлайнов. За это время луч доходит до 90-80 = 10-й линии экранной области. Если нижняя часть твоего спрайта ниже 10-й линии, то точно не попал. Если обьект очень большой, и заведомо луч его догонит, то тут есть другая методика.
Нижняя часть обьекта рисуется в одном кадре, а верхняя в следующем за ним. Пример, весь обьект выводится за 65000 тактов. Это 65000/224 ~ 290 сканлайнов (из 320 пентагоновских). Понятно что, 290-80 = 210, что на 210-192=18 пикселей ниже нижней границы бумаги. Ясно, что спрайт попадает под лучик по любому. Разбиваем спрайт на 2 части. Нижнюю рисуем в одном кадре за, допустим, 30000 тактов, за это время луч дойдет только до 53-й строки бумаги, а мы уже нарисовали самую нижнюю линию нижней части спрайта. Затем начинаем рисовать верхнюю часть спрайта для следующего кадра, на которую потратится 35000 тактов. За это время луч пройдет с 53-й строки бумаги и до конца. Если наш верхняя часть спрайта начиналась выше 54-й строки, то под лучик он не попадет и успешно нарисуется. Надеюсь, не сумбурно написал)





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
