2 votes

Fenêtres multiples et texte en OpenGL... c'est peut-être la caméra ?

Je dois faire fonctionner un programme OpenGL avec deux fenêtres d'affichage. Dans l'une d'elles, je dois avoir le modèle d'un hélicoptère avec une caméra fonctionnelle qui tourne autour de lui dans tous les sens. Avant de décider de diviser les fenêtres d'affichage, j'ai fait fonctionner la caméra sur le modèle, car c'était la priorité absolue. L'autre fenêtre est censée afficher le compteur d'images par seconde, mais pour une raison quelconque, je ne peux voir le texte que sous certains angles.

Mon code est le suivant :

    //sets up the viewports
    void setView(int option)
    {
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();

        switch (option)
        {
            case 1: 
                glViewport(0,height-150,width,150);
                break;
            case 2:
                glViewport(0,0,width,height-150);
                break;
        }
        if(persp)
            gluPerspective(fovy, (GLfloat) width /(GLfloat) height , near, far);
        else
            glOrtho(left,right,bottom,top,-10,10);  

        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        myCam.updateLook();
    }

    void writeBitmapString(void *font, char *string)
    {  
       char *c;
       for (c = string; *c != '\0'; c++) glutBitmapCharacter(font, *c);
    } 

    //main draw function
    void display(void)
    {   
        //Text portion of the window
        setView(1);
        glColor3f(1.0, 0.0, 0.0);
        glRasterPos3f(0, 0, 0.0);
        writeBitmapString((void*)font, "Test text");
        glutSwapBuffers();

        //Viewport for heli
        setView(2);
        glEnable(GL_DEPTH_TEST);
        glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);                
        glPushMatrix();
    //....The rest is just the modelling stuff
    glPopMatrix(); // final pop clause
    glFlush();
    glutSwapBuffers();

Toute aide serait grandement appréciée.

1voto

Aeluned Points 769

On dirait vraiment que vous voulez un HUD ici (pardonnez-moi de deviner vos intentions). Effectuez le rendu de votre scène, puis faites un glLoadIdentity sur les matrices modelview et projection. Ensuite, chargez votre glOrtho. Enfin, définissez vos positions raster pour votre texte et effectuez le rendu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X