Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lumiere ambiente

Opengl

    27 mai 2008 à 16:05:32

    Tout d'abord le code^^ :
    #include <iostream>
    #include <stdlib.h>

    #include <gl\glut.h>

    using namespace std ;

    void Clavier(unsigned char KeyPress, int x, int y)
    {
    switch (KeyPress)
    {
    case 27 : exit(0) ;
    }
    }

    void InitRendering(void)
    {
    glEnable(GL_DEPTH_TEST) ;
    glEnable(GL_COLOR_MATERIAL) ;
    glEnable(GL_LIGHTING) ;
    glEnable(GL_LIGHT0) ;
    glEnable(GL_LIGHT1) ;
    glEnable(GL_NORMALIZE) ;
    }

    void Resize(int w, int h)
    {
    glViewport(0,0,w,h) ;

    glMatrixMode(GL_PROJECTION) ;
    glLoadIdentity() ;
    gluPerspective(45.0, (double)w/(double)h, 1.0, 200.0) ;
    }

    float _angle = 10.0 ;
    void Affichage()
    {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;
    glMatrixMode(GL_MODELVIEW) ;
    glLoadIdentity() ;

    glTranslatef(0.0f, 0.0f, -10.0f) ;

    // Ajoute une lumière ambiante
    GLfloat AmbientColor[] = {0.2f, 0.2f, 0.2f, 1.0f} ; // couleur (2.0, 2.0, 2.0)
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, AmbientColor) ;

    //Positonne un spot


    glPushMatrix() ;
    glRotatef(_angle, 0.0f, 1.0f, 0.0f) ;

    glBegin(GL_QUADS) ;

    //devant
    glColor3f(0.0f, 1.0f, 0.0f) ;
    glVertex3f(1.0f, 1.0f, 0.0f) ;
    glVertex3f(1.0f, -1.0f, 0.0f) ;
    glVertex3f(-1.0f, -1.0f, 0.0f) ;
    glVertex3f(-1.0f, 1.0f, 0.0f) ;

    //derrière
    glColor3f(1.0f, 0.0f, 0.0f) ;
    glVertex3f(1.0f, 1.0f, -2.0f) ;
    glVertex3f(1.0f, -1.0f, -2.0f) ;
    glVertex3f(-1.0f, -1.0f, -2.0f) ;
    glVertex3f(-1.0f, 1.0f, -2.0f) ;

    //droite
    glColor3f(0.0f, 0.0f, 1.0f) ;
    glVertex3f(1.0f, 1.0f, -2.0f) ;
    glVertex3f(1.0f, -1.0f, -2.0f) ;
    glVertex3f(1.0f, -1.0f, 0.0f) ;
    glVertex3f(1.0f, 1.0f, 0.0f) ;

    //gauche
    glColor3f(1.0f, 1.0f,1.0f) ;
    glVertex3f(-1.0f, -1.0f, -2.0f) ;
    glVertex3f(-1.0f, 1.0f, -2.0f) ;
    glVertex3f(-1.0f, 1.0f, 0.0f) ;
    glVertex3f(-1.0f, -1.0f, 0.0f) ;


    glEnd() ;
    glPopMatrix() ;

    glutSwapBuffers() ;
    }

    void update(int valeur)
    {
    _angle += 1 ;
    if (_angle > 360)
    {
    _angle -= 360 ;
    }

    glutPostRedisplay() ;
    glutTimerFunc(25, update, 0);
    }

    int main(int charc, char** charv)
    {
    glutInit(&charc, charv) ;
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) ;
    glutInitWindowSize(700, 700) ;
    glutCreateWindow("Essayons de comprendre l'éclairage avec Faucheuse ^^") ;

    InitRendering() ;
    glutKeyboardFunc(Clavier) ;
    glutReshapeFunc(Resize) ;
    glutDisplayFunc(Affichage) ;
    glutTimerFunc(25, update, 0);

    glutMainLoop() ;
    return 0 ;
    }


    Je pense ne pas avoir tres bien compris le prioncipe de la lumiere ambiente^^, pourquoi une de mes faces de cube est plus eclairé et pas les autres? j'en suios aussi venui a me demander du coup : la lumiere ambiente est elle émise depuis le milieu de la scene??

    Merci d'avance pour vos reponses
    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2008 à 18:14:31

      Merci de lire la charte et d'utiliser les balises de code, ça rend tout de suite plus lisible.

      Dans ton code, tu n'as initialisé aucune lampe. Tu as juste déclaré un tableau de 4 chiffres qui permetteront de spécifier une couleur à la lumière émise par la lampe.
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.

      Lumiere ambiente

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown