iPhone откроется: ошибка в вершинном шейдере - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь расширить возможности моих шейдеров, добавив немного освещения в сцену. Я добавил кучу новых переменных в вершинный шейдер

attribute vec4 Position; // 1
attribute vec4 SourceColor; // 2

attribute vec3 Normal;
attribute vec4 Sample;
attribute vec3 DiffuseMaterial;

varying vec4 DestinationColor; // 3

uniform mat4 Projection;
uniform mat4 Modelview;

uniform mat3 NormalMatrix;
uniform vec3 LightPosition;
uniform vec3 AmbientMaterial;
uniform vec3 SpecularMaterial;
uniform float Shininess;



void main(void) { // 4

    vec3 N = NormalMatrix * Normal;
    vec3 L = normalize(LightPosition);
    vec3 E = vec3(0, 0, 1);
    vec3 H = normalize(L + E);

    float df = max(0.0, dot(N, L));
    float sf = max(0.0, dot(N, H));
    sf = pow(sf, Shininess);

    vec3 color = AmbientMaterial + df * DiffuseMaterial + sf * SpecularMaterial;

    DestinationColor = vec4(color, 1);
//   DestinationColor = SourceColor;

    gl_Position = Projection * Modelview * Position;
}

Однако, когда я делаю

_normalSlot = glGetAttribLocation(programHandle, "Normal");

Я всегда получаю значение 0 или -1. У кого-нибудь есть идеи?

...