Відповіді:
Для довідки - qgl.h Doom3 .
OpenGL - це незвичайний API. Вам часто потрібно працювати з покажчиками функцій або тому, що в стандартній реалізації відсутня нова функціональність, або тому, що ви хочете працювати з розширеннями. Наприклад, якщо ви хочете зателефонувати glCreateShader
, але ОС, на якій ви розробляєтесь, не постачається з новими достатньо новими заголовками GL, ви повинні використовувати glGetProcAddress("CreateShader")
для завантаження функції з драйвера користувача. І тоді ви повинні десь зберігати цей покажчик функції.
Навіть якщо у вашому середовищі розробки є певна функція, машини користувачів можуть не виконувати. І тоді певна функція може виходити в 2-3 формах (розширення постачальника, розширення ARB, основна функція), і тому вам, можливо, доведеться шукати функцію під кількома різними іменами.
Багато бібліотек GL "завантажувачів" (наприклад, GLEW ) намагаються дотримуватися конвенцій GL. Вони створюють "фальшиві" функції зі звичайним gl
-prefix і намагаються магічно змусити ваш код просто працювати на будь-якій ОС або драйвері, який підтримує необхідні функції. За суті, замість того , щоб glFoo
бути реальною функцією, це просто глобальний покажчик функції і бібліотеки завантажувача (під час ініціалізації або першого використання) пошук FooEXT
, FooARB
і Foo
до тих пір , поки не знайде реалізацію , а потім привласнює , що глобальний покажчик. Клієнтський код виглядає так, що він просто викликає звичайну функцію, але магічно все вирішується під час виконання під час ініціалізації таким чином, що стосується всіх різних платформ і драйверів там.
Інші бібліотеки розміщують функції в просторах імен або іншим чином трохи відрізняються від норми GL. Ідентифікатор написав свій власний завантажувач, або тому , що вони не схожі на тих , які існували або - швидше - Quake просто передують будь-яку іншу бібліотеку, ідентифікатор міг би використовуватися ( q
в qgl
ймовірних стендах для Quake, який був першою ID Tech грою використання GL).
Спеціалізація GL написана з можливістю. Специфікація пишеться без префіксів; саме реалізація OpenGL визначає, який префікс використовувати ( gl
звичайно, звичайний). Бібліотеки навантажувачів, які розміщують функції в просторах імен або використовують власні префікси, є повністю дійсними.
Doom 3, заснований на двигуні Quake, цілком типовий і виправданий у використанні бібліотеки завантажувачів для вирішення диваків GL на кількох платформах та у виборі використовувати qgl
префікс.
id
погано (ви абсолютно праві щодо капіталізації), хоча en.wikipedia.org/wiki/Id_Tech все ще написано з пробілом, у всіх джерелах, які я міг знайти.