Как активировать пользовательский атрибут в коде GLSL?оптимизировать (выключить) не работать - PullRequest
1 голос
/ 28 ноября 2011

вершинный шейдер:

#version 150

in vec3 MCVertex;
in float pointvar;

uniform mat4 MVMatrix;
uniform mat4 MPMatrix;

void main()
{
    gl_Position = MPMatrix * MVMatrix * vec4(MCVertex, 1.0);
}

мне нужен атрибут 'pointvar'

но когда я звоню:

glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &numAttributes);

numAttribute = 1;

в моем коде 2 атрибута, numAttribute должен быть 2.

и если я делаю это так, я могу активировать этот атрибут:

gl_Position = MPMatrix * MVMatrix * vec4(MCVertex + vec3(pointvar), 1.0);

затем numAttributes = 2, есть ли другие способы активировать этот атрибут? Я пытаюсь #pragma optimize(off), но не работаю.

1 Ответ

3 голосов
/ 28 ноября 2011

Я почти уверен, что GLSL "сотрет / забудет" любую униформу / атрибут, не использованный в его коде.

Вся информация здесь .

РЕДАКТИРОВАТЬ:

Как и униформа, атрибуты могут быть активными или неактивными.Атрибуты, которые не используются, неактивны;они не имеют привязки.

...