Я разрабатываю 2D-игру для iPhone с использованием OpenGL ES, и я хотел бы использовать растровое изображение размером 320x480 в качестве постоянного фона.
Моей первой мыслью было создать четырехугольник размером 320х480, а затем нанести на него текстуру, представляющую фон. Итак ... Я создал текстуру 512x512 с изображением 320x480. Затем я сопоставил это с квадратом 320x480.
Я рисую этот фон каждый кадр, а затем рисую анимированные спрайты поверх него. Это работает отлично, за исключением того, что рисование всех этих объектов (фон + спрайты) происходит слишком медленно.
Я провел некоторое тестирование и обнаружил, что мое замедление в пиксельном конвейере. Не удивительно, что большое фоновое изображение является основным виновником. Чтобы доказать это, я удалил фоновый рисунок, а все остальное отрисовалось очень быстро.
Я ищу совет о том, как сохранить свое прошлое, а также улучшить производительность.
Вот еще немного информации:
1) Я сейчас тестирую на симуляторе (все еще жду в Apple лицензии)
2) Фон представляет собой текстуру PVR, сжатую до 128k
3) Я надеялся, что мог бы быть способ кешировать этот фон в цветовой буфер, но мне не повезло с этим. это может быть связано с моей неопытностью в OpenGL ES или просто глупой идеей, которая не сработает:)
4) Я понимаю, что не всегда нужно обновлять весь фон, только части, которые были нарисованы движущимися спрайтами. Я начал изучать методы обновления (при необходимости) частей фона либо в виде отдельных текстур, либо с помощью блока ножниц, однако это выглядит не так элегантно.
Любые советы / рекомендации будут с благодарностью ...
Спасибо.