Поделиться через


Многопоточные стратегии рисования OpenGL

GDI не поддерживает несколько потоков. Для каждого потока необходимо использовать отдельный контекст устройства и отдельный контекст отрисовки. Это, как правило, ограничивает преимущества производительности использования нескольких потоков с однопроцессорными системами, работающими под управлением приложений OpenGL. Однако существуют способы использования потоков с одной процессорной системой, чтобы значительно повысить производительность. Например, можно использовать отдельный поток для передачи вызовов отрисовки OpenGL выделенному трехмерного оборудования.

Симметричные многопроцессорные системы (SMP) могут значительно выиграть от использования нескольких потоков. Очевидной стратегией является использование отдельного потока для каждого процессора для обработки отрисовки OpenGL в отдельных окнах. Например, в приложении моделирования полетов можно использовать отдельные процессоры и потоки для отрисовки переднего, заднего и бокового представлений.

Поток может иметь только один текущий активный контекст отрисовки. При использовании нескольких потоков и контекстов отрисовки необходимо соблюдать осторожность, чтобы синхронизировать их использование. Например, используйте один поток только для вызова SwapBuffers после завершения рисования всех потоков.