Bonjour,

Je suis entrain de faire un éclairage par pixel et j'aimerais avoir le choix pour mes matériaux entre choisir une couleur spéculaire ou utiliser une texture spéculaire.

Voici ce que je fait quand j'active mon matériaux pour un modèle 3D :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
glActiveTextureARB(GL_TEXTURE1_ARB);
if(specularTexture)
{
	glBindTexture(GL_TEXTURE_2D, specularTexture->getTextureID());
}else
{ //pas de texture spéculaire donc on utilise une couleur spéculaire
	glBindTexture(GL_TEXTURE_2D, 0);
	glMaterialfv(GL_FRONT, GL_SPECULAR, (float *)specularColor);
}
glMaterialf(GL_FRONT, GL_SHININESS, shininess);
glActiveTextureARB(GL_TEXTURE0_ARB);
Donc dans mon shader je doit utiliser une des 2 lignes de code suivante en fonction de si j'utilise une texture pour le spéculaire ou une bête couleur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
color += att * gl_FrontMaterial.specular * Lspecular * pow(NdotHV, gl_FrontMaterial.shininess);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
color += att * texture2D(specularTexture, gl_TexCoord[0].st) * Lspecular * pow(NdotHV, gl_FrontMaterial.shininess);
Mais quel condition doit-je mettre pour exécuter la bonne ligne ? Y a-t-il moyen de savoir si la texture 'bindé' vaut 0 ou une autre valeur ?

merci