Мой экран OpenGL состоит из 2 треугольников и 1 текстуры, больше ничего. Я хотел бы обновлять экран как можно реже, чтобы экономить энергию и ограничивать использование ЦП/ГП. К сожалению, когда моя подпрограмма draw_scene возвращается досрочно, ничего не рисуя, экран OpenGL становится черным, даже если я никогда не вызываю glutSwapBuffers. Кстати, мой фон не черный. Кажется, что если я не рисую, окно OpenGL теряет свое содержимое. Как я могу свести к минимуму количество рисунков, которые выполняются?
Вопрос
OpenGL: Как минимизировать отрисовку?
- Приведите минимальный пример кода, воспроизводящий проблему, пожалуйста. Sergey 02.12.2018
Ответы
Ответ 1 · рейтинг 1 · datenwolf
Современные графические системы предполагают, что при запуске перерисовки перерисовывается все содержимое. Кроме того, если вы получаете событие перерисовки от графической системы, то обычно это происходит из-за того, что содержимое окна стало неопределенным и его необходимо создать заново, поэтому в такой ситуации вы должны перерисовать.
Чтобы сэкономить энергию, вы должны отключить цикл простоя (или просто передать все, что он делает, и немедленно вернуться к планировщику ОС) и не создавать таймеры для создания событий.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.