IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

[OpenGL] gluLookAt fonction


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Par défaut [OpenGL] gluLookAt fonction
    Salut tout le monde.

    Je suis en train de faire un projet en OpenGL et j'ai un petit probleme avec la fonction glulookat.

    Je ne sais pas trop ou la placer !!

    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    /* Function to draw a quadrilatere */
    void draw_quad( GLfloat point1[], GLfloat point2[], GLfloat point3[], GLfloat point4[] )
    {
            indiceColor ++;
            glColor3fv(colors[indiceColor%2]);
            glBegin(GL_POLYGON);
                    glVertex3fv(point1);
                    glVertex3fv(point2);
                    glVertex3fv(point3);
                    glVertex3fv(point4);
            glEnd();
    }
     
    void display(void)
    {
            glLoadIdentity();
            gluLookAt(viewer[0],viewer[1],viewer[2], 0.0,0.0,0.0, 0.0,1.0,0.0);
     
             glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                    glLoadIdentity();
                    glRotatef(theta[0], 1.0, 0.0, 0.0);
                    glRotatef(theta[1], 0.0, 1.0, 0.0);
                    glRotatef(theta[2], 0.0, 0.0, 1.0);
     
            draw_quad(vertices[3], vertices[2], vertices[1], vertices[0]);
            draw_quad (vertices[2], vertices[6], vertices[5], vertices[1]);
            draw_quad (vertices[6], vertices[7], vertices[4], vertices[5]);
            draw_quad (vertices[7], vertices[3], vertices[0], vertices[4]);
     
             glFlush();
             //I swap the buffers
             glutSwapBuffers();
    }
     
    void myReshape(int w, int h)
    {
        glViewport(0, 0, w, h);
            if (h == 0) h = 1;
            if (w == 0) w = 1;
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        if (w <= h)
            glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w,
                2.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0);
        else
            glOrtho(-2.0 * (GLfloat) w / (GLfloat) h,
                2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0);
        glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
            gluLookAt(viewer[0],viewer[1],viewer[2], 0.0,0.0,0.0, 0.0,1.0,0.0);
    }
     
    int main(int argc, char **argv)
    {
            indiceColor = -1;
            recursionLevel = 0;
            viewer[0] = 0.0;
            viewer[1] = 0.0;
            viewer[2] = 150.0;
        glutInit(&argc, argv);
     
        glutInitWindowSize(500, 500);
        window1 = glutCreateWindow("Spinning box");
     
            // need both double buffering and z buffer 
     
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
     
            glutReshapeFunc(myReshape);
            glutDisplayFunc(display);
            glutMouseFunc(mouse);
            glutKeyboardFunc(keyPressed);
            glEnable(GL_DEPTH_TEST); //Enable hidden--surface--removal 
        glutMainLoop();
        return 1;
    }
    Pour le moment, j'ai mis le code dans la fonctio display.
    Mais j'avoue qu'avec le GL_MODELVIEW et GL_PROJECTION je suis un peu perdu.

    Je veux regarder toujours à l'origine, et au début je me trouve à 150 sur l'axe des z.
    Cette valeur peut changer si l'utilisateur presse des touches ...

    J'ai essayé plusieurs possibilités mais je n'arrive à rien, j'obtiens toujours la meme chose :/

    Est-ce que quelqu'un peut m'aider svp !!

    Merci beaucoup

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut
    ajoute juste ça : glMatrixMode(GL_MODELVIEW);

    avant ton gluLookAt du display. Parce que là en fait tu ne précises pas quelle matrice tu modifies avec ton gluLookAt, il faut d'abord charger la matrice MODELVIEW, l'initialiser (à l'identité) puis appliquer les transformations qui vont bien ...

Discussions similaires

  1. [OpenGL 1.x] OpenGL et fonction glvertex3f
    Par Invité dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/09/2013, 10h42
  2. [OpenGL] gluLookAt fonction
    Par nonolerobot77 dans le forum GLUT
    Réponses: 2
    Dernier message: 17/04/2008, 12h16
  3. Réponses: 2
    Dernier message: 01/11/2007, 10h26
  4. Réponses: 1
    Dernier message: 22/11/2004, 10h46
  5. opengl et pointeur de fonction
    Par Oldhar dans le forum C
    Réponses: 5
    Dernier message: 06/11/2003, 23h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo