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


Контексты отрисовки

Контекст отрисовки OpenGL — это порт, через который проходят все команды OpenGL. Каждый поток, который выполняет вызовы OpenGL, должен иметь текущий контекст отрисовки. Контексты отрисовки связывают OpenGL с системами окон Windows.

Приложение задает контекст устройства Windows при создании контекста отрисовки. Этот контекст отрисовки подходит для рисования на устройстве, на которое ссылается указанный контекст устройства. В частности, контекст отрисовки имеет тот же формат пикселей, что и контекст устройства. Дополнительные сведения см. в разделе Функции контекста отрисовки.

Несмотря на эту связь, контекст отрисовки отличается от контекста устройства. Контекст устройства содержит сведения, относящиеся к графическому компоненту (GDI) Windows. Контекст отрисовки содержит сведения, относящиеся к OpenGL. Контекст устройства должен быть явно указан в вызове GDI. Контекст отрисовки неявный в вызове OpenGL. Перед созданием контекста отрисовки необходимо задать формат пикселей для контекста устройства.

Поток, который выполняет вызовы OpenGL, должен иметь текущий контекст отрисовки. Если приложение выполняет вызовы OpenGL из потока, в который отсутствует текущий контекст отрисовки, ничего не происходит; вызов не оказывает никакого влияния. Приложение обычно создает контекст отрисовки, задает его в качестве текущего контекста отрисовки потока, а затем вызывает функции OpenGL. Завершив вызов функций OpenGL, приложение отключает контекст отрисовки из потока, а затем удаляет контекст отрисовки. В окне может быть несколько контекстов отрисовки одновременно, но поток может иметь только один текущий активный контекст отрисовки.

Текущий контекст отрисовки имеет связанный контекст устройства. Этот контекст устройства не обязательно должен быть тем же контекстом устройства, который использовался при создании контекста отрисовки, но он должен ссылаться на то же устройство и иметь тот же формат пикселей.

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