Opengl erreur 1282 (opération non valide) lors de l'utilisation de la texture()

J'ai le fragment shader:

#version 330 core

layout (location = 0) out vec4 color;

uniform vec4 colour;
uniform vec2 light_pos;

in DATA
{
    vec4 position;
    vec2 texCoord;
    float tid;
    vec4 color;
} fs_in;

uniform sampler2D textures[32];

void main()
{
    float intensity = 1.0 / length(fs_in.position.xy - light_pos);

    vec4 texColor = fs_in.color;
    if (fs_in.tid > 0.0)
    {
        int tid = int(fs_in.tid + 0.5);
        texColor = texture(textures[tid], fs_in.texCoord);
    }

    color = texColor * intensity;
}

Si je lance mon programme, j'obtiens opengl erreur 1282, ce qui n'est pas valide l'opération. Si je n'utilise pas la texture(), donc j'écris texCoord = vec4 (...), il fonctionne parfaitement. Je suis toujours en passant tid (l'IDENTIFIANT de la texture) à 0 (pas de texture) de sorte qu'une partie ne devrait même pas courir. J'ai mis les textures uniformes pour certains réservé, mais autant que je sache, cela ne devrait pas même question. Quelle est la cause de l'opération non valide alors?

InformationsquelleAutor CodezMe | 2015-07-09