Bonjour,
J'esseye de passer un uniform à mon shader et ça ne fonctionne pas !
Voici la partie qui récupère la location:
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
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()); //... }
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 for(unsigned int i=0;i<16; ++i) { glUniform1i(lightsInfo[i].isActiveLoc, true); //... }
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
8
9
10 struct StructLightInfo { bool isActive; vec3 position; bool produceShadow; sampler2D depthShadowTex; mat4 mLightViewProjectionBias; }; uniform StructLightInfo lightsInfo[16];
Le problème: je ne passe jamais dans le 'if', comment est-ce possible ?
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) { //... } }
Info: les méthodes OpenGL ne me retournent pas d'erreur.
Merci d'avance.
Partager