Хм, вы могли бы визуализировать сцену с текстурой, которая больше, чем область просмотра. Затем передвиньте область просмотра на эту текстуру. Всякий раз, когда вы приближаетесь к краям текстуры, вам придется перерисовывать сцену, но не каждый кадр.
Обратите внимание, что это имеет несколько недостатков:
, поскольку восприятие глубины зависит от положения камеры, перемещающей камеру без обновления информации о глубине, может привести к нежелательным и заметным визуальным артефактам, таким как сцена, которая выглядит плоской и т. Д.
Вы не можете повернуть камеру, так как тогда визуальные артефакты будут еще более видимыми, или область просмотра может покинуть текстурированное пространство.
Так что, в качестве альтернативы, попробуйте оптимизировать рисование вашей сцены. Есть несколько подходов, некоторые из которых:
- отбор окклюзии
- рендеринг плоских самозванцев / спрайтов для удаленных объектов
- уменьшение глубины обзора
- с использованием буферов вершин и индексов
- инстансы
- и т.д.
Редактировать
Перечитывая ваш вопрос, кажется, что glTranslatef
и т. Д. Вызовы могут быть проблемой. В современных приложениях OpenGL (а также в Direct3D) вы сами рассчитываете матрицы (возможно, используете OpenCL, но не , а не glTranslatef
и т. Д.), Сохраняете их и передаете их шейдерам для визуализации объектов.
Что может снизить производительность, так это матричные вычисления, если они выполняются при каждом обновлении. Если ваши объекты перемещаются не очень часто, вы можете рассчитывать матрицы только тогда, когда они перемещаются, а при рисовании вы просто передаете их в OpenGL. Для дальнейшей оптимизации вы можете подумать о локальности данных, чтобы уменьшить количество кешей и т. Д., Но это уже очень низкий уровень оптимизации.
Резюмируя ответ: не пытайтесь уменьшить количество обновлений фреймов, а попытайтесь оптимизировать отдельные обновления. Когда «камера» перемещается, вам необходимо обновить представление (то есть перерисовать), и, таким образом, ваш единственный вариант - уменьшить объем работы, необходимой для этих обновлений.