GLSL - Эквивалент "layout (location = 1)" In #version 130 - PullRequest
15 голосов
/ 06 октября 2011

Я читаю учебник об openGL 3.3 (где, естественно, используется GLSL 330).К сожалению, мое оборудование ограничено openGL 3.0 (где GLSL 130 - новейший формат).В GLSL 130 синтаксис

layout (location = 1) in vec4 position;

выдает ошибку.Наиболее важно, что код, в котором несколько экземпляров «макета» применяются к разным переменным, не работает.Я даже пытался

#extension ARB_explicit_attrib_location : require

, который также не поддерживается.Есть ли способ переписать эти утверждения из 330 в 130 эквивалентно?

1 Ответ

19 голосов
/ 06 октября 2011

Если ваша реализация не поддерживает ARB_explicit_attrib_location (как расширение или как version 330 или более поздняя версия), то вы не можете использовать явные расположения атрибутов.Вы должны указать их перед фазой связывания с помощью glBindAttribLocation.

И технически ваше «оборудование» может сделать это просто замечательно.NVIDIA и ATI поддерживают это расширение на всем оборудовании, которое они все еще поддерживают в драйверах.Это удобство API.Я предполагаю, что вы используете аппаратное обеспечение Intel.Если да, то я вас сочувствую.

Кстати, это мой код, случайно ?

...