Bonjour,

J'esseye de passer un uniform à mon shader et ça ne fonctionne pas !

Voici la partie qui récupère la location:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.