2012-01-18 2 views
1

Я создаю приложение OpenGL для окон. Я не могу использовать GLUT, потому что я хотел бы сделать несколько окон. Я знаю, как это сделать, используя wgl, но это очень грязно, и я хотел бы знать, что происходит под капотом.OpenGL на внутренности Windows

На первом месте мне нужно создать окно с нужным форматом пикселей. Чем я подключу это окно к OpenGL, и все работает. Как водитель знает, где визуализировать? Где хранятся данные окна? Я ищу какое-то объяснение, но я не могу найти ничего хорошего.

+2

«Я не могу использовать GLUT, потому что я хотел бы сделать несколько окон». Вы можете сделать несколько окон с помощью FreeGLUT. –

+1

Кто-то разместил эту [ссылку] (http://www.mesa3d.org/dispatch.html) и удалил ее. Я нашел это полезным. – runnydead

ответ

3

Я знаю, как это сделать, используя wgl, но это очень грязно, и я хотел бы знать, что происходит под капотом.

WGL как «под капотом», так и получается. Это интерфейс для создания контекста OpenGL из HWND. Вы не можете получить более низкий уровень.

Как водитель знает, где визуализировать? Где хранятся данные окна?

Контекст устройства, HDC, заключается в том, как рендеринг выполняется по HWND. Обратите внимание, что wglMakeCurrent принимает HDC, который не должен быть HDC, из которого был создан контекст (он просто должен использовать один и тот же формат пикселей). Так что «где рендерить» происходит от этой функции.

Все это хранится внутри Windows и модель драйвера для Windows Installer для OpenGL. Вам не разрешается сунуть его, изменять или даже смотреть на него. Вы можете просто использовать его.

Смежные вопросы