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 - affichage de texte


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Symfony2
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Symfony2
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut OpenGl - affichage de texte
    Bonjour,

    J'ai un soucis avec le tuto 13 de Nehe pour afficher du texte 2D sur une fenêtre.
    J'utilise le C, sous code blocks et windows, ma police se trouve bien dans le répertoire source et binaire..

    Je ne vois pas du tout de quoi ça peut venir, j'ai réduis mon code au minimum pour ne mettre en valeur que la partie du tuto.. Mais rien à l'écran...
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    #include <windows.h>
    #include <SDL/SDL.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <SDL/SDL_ttf.h>
     
    GLuint Nom ;
    GLuint  base;                           // Base Display List For The Font Set
    HDC                     hDC=NULL;               // Private GDI Device Context
    GLfloat cnt1;                           // 1st Counter Used To Move Text & For Coloring
    GLfloat cnt2;                           // 2nd Counter Used To Move Text & For Coloring
     
     
    void KillFont() {
            glDeleteLists(base, 96);                                                        // Delete All 96 Characters
    }
     
    void BuildFont(){
            HFONT font;     // Windows Font ID
            HFONT oldfont; // Used For Good House Keeping
            base= glGenLists(96); // Storage For 96 Characters
     
            font= CreateFont(-24,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,
                            ANTIALIASED_QUALITY,FF_DONTCARE|DEFAULT_PITCH,"arial");
     
            oldfont = (HFONT)SelectObject(hDC, font);               // Selects The Font We Want
            wglUseFontBitmaps(hDC, 32, 96, base);                           // Builds 96 Characters Starting At Character 32
            SelectObject(hDC, oldfont);                                                     // Selects The Font We Want
            DeleteObject(font);                                                                     // Delete The Font
    }
     
    void glPrint(const char *fmt, ...){
            char text[256];                                                         // Holds Our String
            va_list ap;                                                                             // Pointer To List Of Arguments
     
            if (fmt == NULL)                                                                        // If There's No Text
                    return;                                                                                 // Do Nothing
     
            va_start(ap, fmt);                                                                      // Parses The String For Variables
                    vsprintf(text, fmt, ap);                                                // And Converts Symbols To Actual Numbers
            va_end(ap);                                                                                     // Results Are Stored In Text
     
            glPushAttrib(GL_LIST_BIT);                                                      // Pushes The Display List Bits
            glListBase(base - 32);                                                          // Sets The Base Character to 32
            glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);      // Draws The Display List Text
            glPopAttrib();                                                                          // Pops The Display List Bits
    }
     
    int initialisation(){
     
    glViewport(0,0,640,480);                                                // Reset The Current Viewport
     
            glMatrixMode(GL_PROJECTION);                                            // Select The Projection Matrix
            glLoadIdentity();                                                                       // Reset The Projection Matrix
     
             gluPerspective(80,640/480,0.0001f,100.0f);
     
            glMatrixMode(GL_MODELVIEW);                                                     // Select The Modelview Matrix
            glLoadIdentity();
     
             glShadeModel(GL_SMOOTH);               // Enable Smooth Shading
            glClearColor(0.0f, 0.0f, 0.0f, 0.5f);           // Black Background
            glClearDepth(1.0f);                     // Depth Buffer Setup
            glEnable(GL_DEPTH_TEST);                // Enables Depth Testing
            glDepthFunc(GL_LEQUAL);                 // The Type Of Depth Testing To Do
            glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);  // Really Nice Perspective Calculations
     
            BuildFont();
            return 0;
    }
     
     
     
     
    int DrawGLScene(){printf("draw\n");
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     // Clear Screen And Depth Buffer
            glLoadIdentity();                                                                       // Reset The Current Modelview Matrix
            glTranslatef(0.0f,0.0f,-1.0f);                                          // Move One Unit Into The Screen
            // Pulsing Colors Based On Text Position
            glColor3f(1.0f,1.0f,1.0f);
            // Position The Text On The Screen
            glRasterPos2f(-0.45f+0.05f*(float)(cos(cnt1)), 0.32f*(float)(sin(cnt2)));
            glPrint("Active OpenGL Text With NeHe - %7.2f", cnt1);  // Print GL Text To The Screen
            cnt1+=0.051f;                                                                           // Increase The First Counter
            cnt2+=0.005f;                                                                           // Increase The First Counter
            return TRUE;                                                                            // Everything Went OK
    }
     
     
    /// ********************************************************************************************MAIN
    int main(int argc, char *argv[]){
     
            SDL_Init(SDL_INIT_VIDEO);
            SDL_WM_SetCaption("Gestion des palettes",NULL);
            /*ecran =*/  SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);
            SDL_EnableKeyRepeat(10,10);
     
            bool continuer = true;
            SDL_Event event;
            initialisation();
            while (continuer){
     
            //Draw_3D();
            //Draw_2D();
            DrawGLScene();
            SDL_WaitEvent(&event);
            switch(event.type){
                    case SDL_QUIT:
                    break;
                    case SDL_KEYUP:
                    switch (event.key.keysym.sym){
                            case SDLK_ESCAPE:
                            letsexit = 1; printf("évènement SDL: QUITTER\n"); exit(0);
                            break;
                            case SDLK_1:
                            caisse1 = 1;
                            //create_palette(1);
                            printf("évènement SDL: ajouter une caisse en 1 \n");
                            break;
                            case SDLK_2:
                            caisse2 = 1;
                            //create_palette(2);
                            printf("évènement SDL: ajouter une caisse en 2 \n");
                            break;
                            case SDLK_3:
                            caisse3 = 1;
                            //create_palette(3);
                            printf("évènement SDL: ajouter une caisse en 3\n");
                            break;
                            case SDLK_r: printf("reset\n");
                            reset = 1;
                            break;
                            default:
                            break;
                    }
            }
     
     
            SDL_GL_SwapBuffers();
            }
     
            //TTF_CloseFont(police);
            TTF_Quit();
            SDL_Quit(); /// arrêt de la SDL
            return 0;
    }
    Si vous avez des idées... ( d'autant plus que rien ne s'affiche non plus avec la SDL )

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 036
    Billets dans le blog
    12
    Par défaut
    As-tu essayé ce code minimal pour rendre du texte de la manière que tu veux utiliser ?
    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
    HDC    hdc; 
    HGLRC  hglrc; 
     
    // create a rendering context  
    hglrc = wglCreateContext (hdc); 
     
    // make it the calling thread's current rendering context  
    wglMakeCurrent (hdc, hglrc); 
     
    // now we can call OpenGL API  
     
    // make the system font the device context's selected font  
    SelectObject (hdc, GetStockObject (SYSTEM_FONT)); 
     
    // create the bitmap display lists  
    // we're making images of glyphs 0 thru 254  
    // the display list numbering starts at 1000, an arbitrary choice  
    wglUseFontBitmaps (hdc, 0, 255, 1000); 
     
    // display a string:  
    // indicate start of glyph display lists  
    glListBase (1000); 
    // now draw the characters in a string  
    glCallLists (24, GL_UNSIGNED_BYTE, "Hello Windows OpenGL World");
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Symfony2
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Symfony2
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    Ça ne fonctionne pas non plus...

    D'autres idées ? !

  4. #4
    screetch
    Invité(e)
    Par défaut
    c'est quoi "ca ne fonctionne pas"? des erreurs a la compil, un crash, une erreur, un ecran noir?

  5. #5
    screetch
    Invité(e)
    Par défaut
    ah pardon tu as dit rien a l'écran.
    Si tu affiches un triangle coloré en plus de ton texte, ca marche?

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Symfony2
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Symfony2
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    Oui oui j'ai bien la 3D qui s'affiche..
    J'affiche un carré avec texture en utilisant les vertex array et pas de soucis de ce coté là.
    Donc rien à l'écran au niveau écriture avec ou sans dessin opengl

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/06/2009, 12h30
  2. Opengl affichage texte
    Par lamoua76 dans le forum OpenGL
    Réponses: 5
    Dernier message: 21/05/2007, 23h14
  3. [C#] Affichage de texte vertical...
    Par AntiSAL dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/06/2004, 15h46
  4. Affichage de texte est mise à jour de l'écran
    Par Galdor_sp dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/03/2004, 23h31
  5. [MX 2004] Affichage du texte dynamique
    Par caramel dans le forum Flash
    Réponses: 8
    Dernier message: 29/01/2004, 17h07

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