Существуют машины, которые могут делать много вещей. Есть машины, которые могут не реализовывать EXT_texture_filter_anisotropic. Существуют машины, которые могут реализовывать фрагментные шейдеры без вершинных шейдеров. И так далее.
Вопрос, который вы должны задать себе: вас это волнует? Стоит ли тратить время и силы на поддержку таких машин? И хотите ли вы поддерживать их таким образом, вместо того, чтобы писать решение с фиксированными функциями, которое будет поддерживать их, а также устаревшее оборудование без шейдеров?
В общем, если драйвер не поддерживает 2.0, то я бы предложил написать для этого драйвера путь рендеринга на основе 1.4. Либо вообще откажитесь от шейдеров для этого оборудования, либо, на большинстве , используйте сборочные шейдеры.
В любом случае нет совместимости между расширенной версией GLSL (которая FYI не предоставляется с помощью GL_ARB_vertex_ программа . Это GL_ARB_shader_objects, с GL_ARB_vertex_shader и / или GL_ARB_fragment_shader в зависимости от ситуации) и базовой версией) , Таким образом, любые новые функции, добавленные с тех пор, такие как между 2.0 и 2.1, 2.1 и 3.0 и т. Д., Не будут доступны для него. Вы не можете вставить GLhandleARB
в функцию, которая ожидает GLuint
. Функции, которые ищут объекты, связанные с glUseProgram(GLuint)
, также не будут работать с эквивалентом расширения.