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 :

Problème pour afficher mes font au premier plans


Sujet :

OpenGL

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut Problème pour afficher mes font au premier plans
    Bonjour (encore...)

    Je suis en train de finir mes cheveux blancs sur pas grand-chose ; afficher mes "font" au premier plan, d'une certaine couleur et à une certaine position . Rien de méchant hein ? Le problème est que malgré avoir lu et relu un nombre incalculable de fois ma fonction, je ne vois aps le "hic" . Le probème est que mon texte s'affiche toujours en blanc et en bas à gauche de mon écran .... il semble sinon être au premier plan.

    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
     
    void FontManager::DrawText2D(std::string FontName, unsigned int x, unsigned int y, const char *chaine, ...)
    {
    	glPushAttrib( GL_LIGHTING | GL_DEPTH_TEST | GL_LIST_BIT );
    	glDisable(GL_TEXTURE_2D);
    	glDisable(GL_LIGHTING);
    	glEnable(GL_DEPTH_TEST) ;
     
    	char texte[512]; 
    	va_list argsPtr; 
    	va_start(argsPtr, chaine); 
    	vsprintf_s(texte, chaine, argsPtr); 
    	va_end(argsPtr); 
     
    	glMatrixMode(GL_PROJECTION); 
    	glPushMatrix(); 
    	glLoadIdentity();
    	gluOrtho2D(0,Application::Instance().m_Settings.m_ScreenWidth,0,Application::Instance().m_Settings.m_ScreenHeight);
     
    	glMatrixMode(GL_MODELVIEW); 
    	glPushMatrix(); 
    	glLoadIdentity(); 
     
    	glTranslatef((GLfloat)x,(GLfloat)y,0);
    	glColor4f(1.0f, 0.0f, 0.0f,1.0f); 
    	glListBase(m_Fonts2D[FontName].m_List); 
    	glCallLists(strlen(texte), GL_UNSIGNED_BYTE, texte); 
     
    	glPopMatrix(); 
    	glMatrixMode(GL_PROJECTION); 
    	glPopMatrix(); 
    	glMatrixMode(GL_MODELVIEW);
     
    	glPopAttrib();
    }
    Ma fonction de chargement du font est faites ainsi (je supose fortement que le problème vient de ma callList ... car en décommentant son affichage et en affichant un simple quad ; ce dernier est au bon endroit et de la bonne couleur à 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
     
    void FontManager::LoadFont2D(std::string FontName, int Height)
    {
    	if ( m_Fonts2D.find(FontName) != m_Fonts2D.end() )
    	{
    		DeleteFont2D(FontName) ;
    		m_Fonts2D.erase(FontName);
    	}
     
    	Font2D f ;
    	f.m_List = glGenLists(256); 
     
    	std::wstring FontNameWS = s2ws(FontName);
    	LPCWSTR FontNameLP = FontNameWS.c_str();
     
    	f.m_Id = CreateFont(Height, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE|DEFAULT_PITCH, FontNameLP); 
     
    	HFONT oldfont = (HFONT)SelectObject(m_hDC, f.m_Id);
    	wglUseFontBitmaps(m_hDC, 0, 255, f.m_List); 
    	SelectObject(m_hDC, oldfont);
     
    	m_Fonts2D[FontName] = f ; 
    }
    En attendant , je vais réviser mes displayList, car je sens que le probèlme viens de là (ou pas ^^).

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    J'ai trouvé qu'en fait j'avais des bitmaps et que donc il fallait que j'utilise glRasterPos pour afficher ma display list. Bref, le positionnement fonctionne mais la coloration pose problème : il ne prend en compte comme couleur de mes fonts que le glColor courant lors de la création du font ... il va falloir que je me renseigne pour voir si c'est normal ou pas J'y vais ^^

    bon j'ai mis mon glColor avant mon glRasterPos2f(x,y) et la couleur et le positionnement vont bien ; mais je me rend compte que le texte n'est pas toujours au premier plan maintenant (j'adore les problèmes à ralonge )
    Je vais fouiller du côté de ce rasterPos car malgré plusieurs lecture, j'ai encore du mal à bien comprendre ... il se peut que je l'utilise mal.

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut
    Voila, problème résolu, à chaque appel à ma fonction DrawText, je garde en mémoire ce qu'on lui demande et jaffiche tout en FIN de rendu . Ca permet également de minimiser els changement d'état et de matrice opengl Bref tout va bien ^^

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Depuis quelques temps, j'ai le même problème d'affichage en bas à gauche et en blanc de mes textes.

    J'ai lu vos péripéties, mais je n'arrive pas à appliquer votre solution... (ou peut être ne l'ai je comprise)

    Pourriez vous la détailler ??

    Merci d'avance.

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

Discussions similaires

  1. Problème pour afficher un contrôle dans un formulaire
    Par JahRastafari dans le forum IHM
    Réponses: 5
    Dernier message: 16/06/2005, 10h15
  2. Problème pour afficher une image bmp
    Par homeostasie dans le forum MFC
    Réponses: 6
    Dernier message: 08/05/2005, 18h36
  3. [MFC]Problème pour afficher une image.
    Par Deedier dans le forum MFC
    Réponses: 4
    Dernier message: 25/03/2005, 16h13
  4. Réponses: 13
    Dernier message: 23/12/2004, 18h01
  5. Réponses: 3
    Dernier message: 29/08/2003, 10h57

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