Passer un uniform à un shader
Bonjour,
J'esseye de passer un uniform à mon shader et ça ne fonctionne pas !
Voici la partie qui récupère la location:
Code:
1 2 3 4 5 6 7 8
| for(unsigned int i=0;i<16;++i)
{
isActiveLocName.str("");
isActiveLocName << "lightsInfo[" << i << "].isActive";
lightsInfo[i].isActiveLoc = glGetUniformLocation(shaderID, isActiveLocName.str().c_str());
//...
} |
Voici le code qui permet d'envoyer l'information au shader:
Code:
1 2 3 4 5
| for(unsigned int i=0;i<16; ++i)
{
glUniform1i(lightsInfo[i].isActiveLoc, true);
//...
} |
La définition de l'uniform dans mon fragment shader:
Code:
1 2 3 4 5 6 7 8 9 10
| struct StructLightInfo
{
bool isActive;
vec3 position;
bool produceShadow;
sampler2D depthShadowTex;
mat4 mLightViewProjectionBias;
};
uniform StructLightInfo lightsInfo[16]; |
Ensuite dans mon fragment shader, je l'utilise comme ceci:
Code:
1 2 3 4 5 6 7
| for(int i=0; i<16;++i)
{
if(lightsInfo[i].isActive)
{
//...
}
} |
Le problème: je ne passe jamais dans le 'if', comment est-ce possible ?
Info: les méthodes OpenGL ne me retournent pas d'erreur.
Merci d'avance.