Обычный способ сделать этот тип эффекта - использовать функции рисования растровых изображений, которые позволяют смещать изображения: для эффекта прокрутки вниз просто сделайте две копии из вашего исходного растрового изображения звездного поля в буфер экрана: сначала из источника От (0, 0) до (ширина, высота-смещение) до экрана (от 0, Yoffset) до (ширина, высота). Во-вторых, перейдите от источника (0, высота-Yoffset) к (ширина, высота) к экрану (0, 0) к (ширина, Yoffset). Изменяя Yoffset в каждом кадре, вы можете контролировать скорость прокрутки, просто убедитесь, что Yoffset сброшен, когда он достигает (высота) обратно в 0. Реверсирование направления такое же, только инвертируйте изменения Yoffset. Один и тот же метод может быть применен к X и Y, даже в одно и то же время, для получения очень мощных эффектов прокрутки на весь экран.
Мы используем этот метод в нашем ядре iSGPU для прокрутки обоев и других фоновых эффектов. Производительность обычно очень высокая, так как вы имеете дело с 2-мя блоками передачи линейной памяти. Так как метод использует растровые изображения в памяти, вы можете иметь очень хорошую прокрутку изображений, а не просто изменение пикселей. С помощью всего лишь нескольких изменений вышеуказанных параметров вы также можете использовать растровые изображения, превышающие размер экрана, для создания эффекта «большего мира».
Удачи!
Стюарт,
Главный архитектор / You.i Labs