2017-01-23 15 views
1

Общий вопрос об окне с расширенным меню, которое часто обновляется, но обновляется только около 10% фактического экрана. Многое, если текст остается неизменным.SDL: аппаратное обеспечение против программного рендеринга

SDL2 использует рендеринг и текстуры для использования аппаратного ускорения, но также позволяет рендеринг программного обеспечения.

Мой вопрос:

  • Это быстрее перерисовывать весь экран/меню каждый раз путем предоставления непосредственно к аппаратным средствам с использованием SDL_CreateRender()/аппаратно-рендеринга, где все меню обращается каждый раз, когда только Фактически изменяется 10% меню? Или:
  • Быстрее ли писать все меню один раз в ОЗУ с помощью SDL_CreateSoftwareRenderer()/программного обеспечения, а затем обновлять только 10%, которые действительно меняются?
+3

** Профиль, чтобы знать наверняка. ** (Но я бы сказал, что это не имеет особого значения, если оно не начнет отставать.) Также есть третий способ, который должен быть удобным, и я предполагаю самый быстрый: вы может оборудовать-рендеринг статической части меню в текстуру, а затем аппаратно-визуализировать каждый кадр. (Кроме того, если вы делаете игру, то рендеринг программного обеспечения, вероятно, не является вариантом, так как все, кроме меню, обычно часто обновляется.) – HolyBlackCat

+2

Я предполагаю, что это будет сильно зависеть от ПК, на котором он работает, ускорение может быть быстрее, даже с полным перерисовкой. Тем не менее, похоже, что это не ресурсоемкое приложение, поэтому, возможно, проще всего писать и поддерживать. – Alden

+0

Спасибо, ребята. Приятно иметь возможность получить другие мнения, прежде чем тратить много времени на проблему. Самый простой путь состоял в том, чтобы использовать аппаратное рендеринг и каждый раз перерисовывать все окно, поскольку оно достаточно быстро. – Brian

ответ

1

Спасибо, ребята.

Приятно иметь возможность получить другие мнения, прежде чем тратить много времени на проблему. Самый простой путь состоял в том, чтобы использовать аппаратное рендеринг и каждый раз перерисовывать все окно, поскольку оно достаточно быстро.

Основная программа рисует все (данные в режиме реального времени и графический интерфейс под Linux) как отдельные пиксели для текстуры, которая отображается с частотой 30 Гц на экране. То, что я обнаружил, заключалось в том, что после того, как частота процессора превысила 1 ГГц, большая часть графики (небольшие области/пиксели) была такой же быстрой или быстрой, чем аппаратная рендеринг, за исключением случаев, когда очищали большую площадь экрана. Это заняло определенную работу и много чтобы получить рендеринг SDL в потоке, в то время как данные пикселов (GUI и данные) обновляются в основном.