Opengl extensions (розширення)

Багато нові розширення стандартизируются, крім того, в наступних версіях OpenGL деякі з них будуть вже входити в сам OpenGL, а не у вигляді його розширень.

Такі можливості, як мультитекстурирование, specular і компресія текстур дістаються в OpenGL 1.2 через механізм розширень.

Як же користуватися розширеннями?

Опис розширення зазвичай являє собою звичайний текстовий файл (Приклад).

Можна самому додавати кожен раз визначення нового розширення в свій код. Однак майже всі визначення розширень можна отримати з файлу glext.h.

Сам файл glext.h можна взяти з файлу glext.zip. зібраного з NVSDK. або сам glext.h з сайту SGI.

Не забудьте в вашому коді включити цей заголовки:

Визначаємо наявність розширення.

Тому, перед тим як намагатися використовувати ту чи іншу розширення, необхідно насамперед перевірити його наявність.

Функцією glGetString () з параметром GL_EXTENSIONS ви зможете отримати список всіх розширень, які підтримуються вашим акселератором. (Пам'ятаєте, що це стандартна функція OpenGL і викликати її необхідно після ініціалізації OpenGL).

Ця функція повертає покажчик на рядок, що містить перелік усіх імен розширень, розділених пропуском. Ви повинні перевірити, чи є ім'я потрібного розширення в цьому списку чи ні.

Використання додаткових функцій.

Дуже часто, але не завжди, розширення додає додаткові функції по роботі зі своїми можливостями.

Наприклад, однією з таких функцій розширення "ARB мультитекстурирование" (GL_ARB_multitexture) є функція glActiveTextureARB ().

Але, так як заздалегідь не відомо, чи є така функція чи ні, ви повинні самі стежити за цим і, крім того, самостійно створити свій покажчик на необхідну функцію, яким ви згодом будете користуватися.

Тип покажчика на функцію теж визначений в glext.h для кожної функції, наприклад, для нашого випадку:

Для використання функції необхідно в вашому коді глобально оголосити покажчик на функцію:

І після ініціалізації OpenGL, привласнити йому покажчик на існуючу функцію, який можна отримати спеціальний пристрій wglGetProcAddress ().

wglGetProcAddress () - функція не відноситься до чистого OpenGL, а відноситься до Windows-додатком OpenGL (WGL). Вона приймає в якості параметра рядок з ім'ям шуканої функції. Ця функція повертає тип PROC, тому робимо приведення типів.

Якщо ваш покажчик став ненульовим, ви можете спокійно їм користуватися в своїх потребах у функціональному вигляді:

Деструктивних дій, крім спеціально обумовлених, після використання розширень проводити не потрібно.

Схожі статті