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 :
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 :
color += att * gl_FrontMaterial.specular * Lspecular * pow(NdotHV, gl_FrontMaterial.shininess);
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
Partager