Расширения, как правило, позволяют поставщикам видеокарт добавлять новые функции в OpenGL, не дожидаясь следующей редакции спецификации OpenGL. Существуют различные типы расширений:
- Расширение поставщика - только один поставщик предоставляет определенный тип функциональности.
- Пример:
NV_vertex_program
- Расширение Multivendor - несколько поставщиков собрались вместе и согласовали функциональность.
- Пример:
EXT_vertex_program
- ARB расширение - OpenGL Architecture Review Board благословил расширение. У вас есть разумное ожидание, что этот тип расширения будет существовать некоторое время.
- Пример:
ARB_vertex_program
Расширения не должны проходить через все эти шаги. Иногда расширение только когда-либо внедряется одним вендором, прежде чем проекты оборудования пойдут другим путем и расширение будет прекращено. В других случаях расширение может достичь статуса ARB, прежде чем все решат, что есть лучший способ. (Например, подход ARB_vertex_program
был отложен в пользу высокоуровневого подхода языка ARB_vertex_shader
, когда пришло время внедрять шейдеры в основную спецификацию OpenGL.) Даже расширения ARB не вечны; Я бы сегодня не написал что-нибудь, требующее, например, ARB_matrix_palette
.
С учетом всего сказанного, очень хорошая идея - быть в курсе расширений, в частности последних расширений ARB и EXT. В прошлом было верно, что некоторые из «быстрых путей» через аппаратные средства были доступны только через расширения. Аналогичным образом, если вы хотите знать, на что способны все функциональные возможности аппаратного обеспечения, нет лучшего места, чем в расширении для конкретного поставщика.
Если вы только начинаете работать с OpenGL, я бы порекомендовал изучить:
ARB_vertex_buffer_object
(вершины)
ARB_vertex_shader
/ ARB_fragment_shader
/ ARB_shader_objects
/ GLSL spec (шейдеры)
Более продвинутый:
ARB/EXT_framebuffer_object
(рендеринг вне экрана)
Это все функциональные возможности, внедренные в ядро, но было бы неплохо увидеть его изолированно, чтобы вы могли лучше понять, где находятся его границы. (Базовая спецификация OpenGL плавно смешивает старое с новым, поэтому это может быть очень важно, если вы хотите остаться на быстром пути и избежать устаревшего и иногда реализованного в программных путях.)
Что бы вы ни делали, убедитесь, что у вас есть соответствующие проверки для добавочных номеров, которые вы решили использовать, и запасных вариантов, где это необходимо. Даже если ваша карта может иметь указанное расширение, нет гарантии, что расширение будет присутствовать на карте другого поставщика или даже в другой операционной системе с той же картой.