2015-08-17 1 views
-1

J'essaye d'allumer une scène avec quelques objets simples. J'ai deux lumières, une lumière de point et une lumière de point et l'éclairage semble fonctionner correctement sur les objets dans la scène, mais quand il s'agit du sol texturé est seulement affecté par l'ambiant et je ne peux pas comprendre pourquoi. Je pensais que cela avait quelque chose à voir avec les normaux en le définissant comme je le pense, en le montrant. si j'enlève la texture, j'obtiens les mêmes résultats. qu'avais-je fait de mal?Pourquoi mon polygone de sol n'est-il pas affecté par la lumière spéculaire et diffuse?

voici mon code:

void drawFloor() 
{ 
    setMaterial(mat_specularFloor, mat_specularFloor, mat_specularFloor, mat_specularFloor); 
    //glColor3f(1.0, 1.0, 1.0); 
    glEnable(GL_TEXTURE_2D); 
    //glEnable(GL_NORMALIZE); 
    glBindTexture(GL_TEXTURE_2D, g_Texture[0]); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
    //glColor3f(.5, 0.5, 0.7); 
    glBegin(GL_TRIANGLE_FAN); 
    glNormal3f(0.0f, 1.0f, 0.0f); 
    glTexCoord2f(0.0f, 0.0f); 

    glVertex3f(-50, 0, -50); 
    glTexCoord2f(10.0f, 0.0f); 
    glVertex3f(50, 0, -50); 
    glTexCoord2f(10.0f, 10.0f); 
    glVertex3f(50, 0, 50); 
    glTexCoord2f(0.0f, 10.0f); 
    glVertex3f(-50, 0, 50); 
    glEnd(); 
    glDisable(GL_TEXTURE_2D); 
} 

enter image description here

+0

Lorsque vous dites que ce n'est pas affecté: la lumière est-elle à l'arrêt? – Tommy

+0

Avez-vous activé 'GL_LIGHTING' pour dessiner le sol? – ProXicT

+0

Oui, les deux lumières sont fixes, vous pouvez déplacer le projecteur avec le clavier. GL_LIGHTING était activé avant de dessiner le sol. en fait, la table et la théière sont dessinées juste après le sol et elles sont très bien éclairées. –

Répondre

0

Je ne suis pas au courant de pipeline de fonction fixe cela peut être résolu en utilisant une version plus récente de opengl et en utilisant les shaders pour éclairage par pixel. Une façon possible de résoudre ce problème est de subdiviser le sol de sorte qu'il soit composé de plusieurs sections plus petites. Puisque opengl exécute le calcul pour chaque vertex votre lumière est en train d'être moyennée et si vous deviez subdiviser chaque section, la lumière aura plus d'impact sur

0

ok donc le problème principal avec mon éclairage était qu'il était juste un polygone géant et parce qu'il était si grand que je n'ai pas eu d'éclairage aux sommets donc il n'y avait rien à interpoler.

Maintenant, je reçois l'éclairage diffus du projecteur mais je ne semble pas avoir de surbrillance spéculaire. Est-il même possible d'obtenir une surbrillance spéculaire sur un plan? Si oui, que dois-je faire d'autre pour résoudre ce problème? Je dois rendre le sol brillant.