OpenGL 2.0 против GL_ARB_vertex_program - PullRequest
2 голосов
/ 09 августа 2011

Меня смущают реальные различия, если таковые имеются, между API шейдеров, интегрированными в стандарт GL с GL 2.0, и API шейдеров в расширении GL_ARB_vertex_program (и друзьями).это то, что существуют машины, которые могут, например, поддерживать glLinkProgramARB, но могут еще не поддерживать glLinkProgram.Так в чем же преимущество использования версий без ARB?Или нет.

1 Ответ

5 голосов
/ 09 августа 2011

Существуют машины, которые могут делать много вещей. Есть машины, которые могут не реализовывать 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), также не будут работать с эквивалентом расширения.

...