begin process at 2012 05 29 21:40:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

problème police openGl


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème police openGl

samedi 5 mars 2005 à 14:11:30 | problème police openGl

vodkapomme43

Bonjour,

J'utilise le code suivant pour créer une police avec OPenGL:

GLvoid BuildFont(GLvoid)        // Build Our Bitmap Font
{
 HFONT font;          // Windows Font ID
 HFONT oldfont;
 //HWND  g_hWnd;// Used For Good House Keeping
 //hDC = GetDC(g_hWnd);

 base = glGenLists(96);        // Storage For 96 Characters

 font = CreateFont( 44,       // Height Of Font
      60,        // Width Of Font
      0,        // Angle Of Escapement
      0,        // Orientation Angle
      FW_BOLD,      // Font Weight
      FALSE,       // Italic
      FALSE,       // Underline
      FALSE,       // Strikeout
      ANSI_CHARSET,     // Character Set Identifier
      OUT_TT_PRECIS,     // Output Precision
      CLIP_DEFAULT_PRECIS,   // Clipping Precision
      ANTIALIASED_QUALITY,   // Output Quality
      FF_DONTCARE|DEFAULT_PITCH,  // Family And Pitch
      "Courier New");     // Font Name

 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
 
}

Le problème est que je n'utilise pas MFC donc il ne connait pas hDC ( il est également inutile de déclarer HDC  hDC). Comment dois-je procéder pour éviter d'utiliser cette variable?
(je ne souhaite pas utiliser une fonction qui créer une police à partir d'une image)
Merci d'avance,
Guillaume

dimanche 6 mars 2005 à 07:21:59 | Re : problème police openGl

gnoofy120

Salut,
Si tu es sous windows tu peux récupérer le HDC avec la fonction "wglGetCurrentDC".
Si tu utilise GLUT il y a des fonctions GLUT pour l'utilisation de police bitmap.
Sinon il te reste la possibilité de charger une police bitmap depuis un fichier ou de creer des polices à partir de texture, c'est indépendant du système utilisé et les polices à base de texture peuvent être assez jolies.  
dimanche 6 mars 2005 à 11:27:11 | Re : problème police openGl

KeniiyK

Membre Club

Ou alors tu les declares a la "mano" : (comme moi...)

// caractere espace
GLubyte policeSpace[16]=
 {
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 };

// caractere '.'
 GLubyte policePoint[16]=
 {
  0x00,0x00,0x00,0x18,0x3c,0x3c,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 };

// Lettre Majuscule A-Z
 GLubyte policeLetters[26][16]=
 {
  {0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0xff,0xc3,0xc3,0xc3,0x66,0x3c,0x18,0x00,0x00},
  {0x00,0x00,0x00,0xfe,0xc7,0xc3,0xc3,0xc7,0xfe,0xc7,0xc3,0xc3,0xc7,0xfe,0x00,0x00},
  {0x00,0x00,0x00,0x7e,0xe7,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xe7,0x7e,0x00,0x00},
  {0x00,0x00,0x00,0xfc,0xce,0xc7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc7,0xce,0xfc,0x00,0x00},
  {0x00,0x00,0x00,0xff,0xc0,0xc0,0xc0,0xc0,0xfc,0xc0,0xc0,0xc0,0xc0,0xff,0x00,0x00},
  {0x00,0x00,0x00,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xfc,0xc0,0xc0,0xc0,0xff,0x00,0x00},
  {0x00,0x00,0x00,0x7e,0xe7,0xc3,0xc3,0xcf,0xc0,0xc0,0xc0,0xc0,0xe7,0x7e,0x00,0x00},
  {0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0xc3,0xff,0xc3,0xc3,0xc3,0xc3,0xc3,0x00,0x00},
  {0x00,0x00,0x00,0x7e,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7e,0x00,0x00},
  {0x00,0x00,0x00,0x7c,0xee,0xc6,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00},
  {0x00,0x00,0x00,0xc3,0xc6,0xcc,0xd8,0xf0,0xe0,0xf0,0xd8,0xcc,0xc6,0xc3,0x00,0x00},
  {0x00,0x00,0x00,0xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x00,0x00},
  {0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xdb,0xff,0xff,0xe7,0xc3,0x00,0x00},
  {0x00,0x00,0x00,0xc7,0xc7,0xcf,0xcf,0xdf,0xdb,0xfb,0xf3,0xf3,0xe3,0xe3,0x00,0x00},
  {0x00,0x00,0x00,0x7e,0xe7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xe7,0x7e,0x00,0x00},
  {0x00,0x00,0x00,0xc0,0xc0,0xc0,0xc0,0xc0,0xfe,0xc7,0xc3,0xc3,0xc7,0xfe,0x00,0x00},
  {0x00,0x00,0x00,0x3f,0x6e,0xdf,0xdb,0xc3,0xc3,0xc3,0xc3,0xc3,0x66,0x3c,0x00,0x00},
  {0x00,0x00,0x00,0xc3,0xc6,0xcc,0xd8,0xf0,0xfe,0xc7,0xc3,0xc3,0xc7,0xfe,0x00,0x00},
  {0x00,0x00,0x00,0x7e,0xe7,0x03,0x03,0x07,0x7e,0xe0,0xc0,0xc0,0xe7,0x7e,0x00,0x00},
  {0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xff,0x00,0x00},
  {0x00,0x00,0x00,0x7e,0xe7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x00,0x00},
  {0x00,0x00,0x00,0x18,0x3c,0x3c,0x66,0x66,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x00,0x00},
  {0x00,0x00,0x00,0xc3,0xe7,0xff,0xff,0xdb,0xdb,0xc3,0xc3,0xc3,0xc3,0xc3,0x00,0x00},
  {0x00,0x00,0x00,0xc3,0x66,0x66,0x3c,0x3c,0x18,0x3c,0x3c,0x66,0x66,0xc3,0x00,0x00},
  {0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0x66,0xc3,0x00,0x00},
  {0x00,0x00,0x00,0xff,0xc0,0xc0,0x60,0x30,0x7e,0x0c,0x06,0x03,0x03,0xff,0x00,0x00}
 };

// 0-9
GLubyte policeNumbers[10][16]=
 {
  {0x00,0x00,0x00,0x3c,0x66,0x66,0xc3,0xc3,0xc3,0xc3,0xc3,0x66,0x66,0x3c,0x00,0x00},
  {0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x66,0x76,0x3e,0x1e,0x0e,0x06,0x00,0x00},
  {0x00,0x00,0x00,0xff,0xff,0x70,0x38,0x1c,0x0e,0x06,0x03,0xc6,0x6c,0x38,0x00,0x00},
  {0x00,0x00,0x00,0x3c,0x46,0x03,0x03,0x06,0x0e,0x02,0x03,0x63,0x36,0x1c,0x00,0x00},
  {0x00,0x00,0x00,0x0c,0x0c,0x0c,0x7e,0x7e,0x6c,0x60,0x30,0x30,0x38,0x18,0x00,0x00},
  {0x00,0x00,0x00,0x7c,0x7e,0x66,0x02,0x72,0x7e,0x6c,0x60,0x60,0x7e,0x7e,0x00,0x00},
  {0x00,0x00,0x00,0x3c,0x7e,0x66,0x66,0x7c,0x7c,0x60,0x70,0x70,0x3e,0x3e,0x00,0x00},
  {0x00,0x00,0x00,0x60,0x30,0x30,0x18,0x18,0x7e,0x0c,0x06,0x03,0xff,0xff,0x00,0x00},
  {0x00,0x00,0x00,0x7e,0xc3,0x81,0xc3,0x42,0x7e,0x3c,0x42,0x42,0x7e,0x3c,0x00,0x00},
  {0x00,0x00,0x00,0x7c,0x7c,0x0e,0x0e,0x06,0x3e,0x3e,0x66,0x66,0x7e,0x3c,0x00,0x00}
 };

dimanche 6 mars 2005 à 17:10:54 | Re : problème police openGl

Arnaud16022

Membre Club
ouah mais c'est quoi ca?
je fais un copier-coller, ca peut tje servir... mais tu l'utilise comment ton machin? tu crée une texture a partir de tes donées?

_______________________
Omnia vincit labor improbus
dimanche 6 mars 2005 à 17:54:54 | Re : problème police openGl

KeniiyK

Membre Club

Oui tu peux aussi en faire une texture en alpha ou couleur ou couleur + alpha si tu veux.
Mais a la base ca sert plutot a afficher des bitmap via glBitmap();

exemple  (en C) avec les displays lists :
void initializePolice()
{
      glPixelStorei(GL_UNPACK_ALIGNMENT,1);
      /*GLuint */ policeDisplay=glGenLists(38); // 26 lettre + 10 chiffre + espace + point

       for(i=0,j='A';i<26;i++,j++)
       {
              glNewList(policeDisplay+j,GL_COMPILE);
               glBitmap(8,16,0.0,0.0,10.0,0.0,policeLetters[i]);
              glEndList();
       }

          for(i=0,j='0';i<10;i++,j++)
          {
              glNewList(policeDisplay+j,GL_COMPILE);
               glBitmap(8,16,0.0,0.0,10.0,0.0,policeNumbers[i]);
              glEndList();
          }

          glNewList(policeDisplay+' ',GL_COMPILE);
              glBitmap(8,16,0.0,0.0,10.0,0.0,policeSpace);
          glEndList();

          glNewList(policeDisplay+'.',GL_COMPILE);
              glBitmap(8,16,0.0,0.0,10.0,0.0,policePoint);
          glEndList();
}

void bitmapWriteString(char* s) //ecrit a la position de la trame courante (glRasterPos) la chaine s
{
    glPushAttrib(GL_LIST_BIT);
    glListBase(policeDisplay);
    glCallLists(strlen(s),GL_UNSIGNED_BYTE,(GLubyte*)s);
    glPopAttrib();
}

Fais bien attention à avoir policeDisplay,policeLetters,policeNumbers,policeSpace et policePoint déclaré en global si C ou via un malloc, un pointeur dessus (et peut etre une struct) si tu veux les definir dans une fonction, et si C++ tu te les mets en membre de classe (static const par exemple...). Et pour la couleur du texte glColor.
Le truc un peu chiant avec les glBitmap() c'est que tu ne peux pas les orientés (genre faire un texte defilant a la star wars, enfin si c'est possible pour cet exemple mais lourd a faire et a gerer, faudrait en fait faire une police "contenant la projection").
Donc tu peux aussi en faire une texture ALPHA et la bien sur, tu fais ce que tu veux....

dimanche 25 juin 2006 à 12:19:44 | Re : problème police openGl

nisaloncaje

Bonjour a tous !!!

Je sais que je suis vraiment en retard, (lol ca fait plus d'un an que vous avez posté) mais ce topic me concerne aussi car moi, je voudrais faire du texte en 3d avec glut, mais, en allant sur le site de Nehe, il utilise hdc et comme je suis sous glut, j'aimerais bien ne pas à avoir à utiliser cette variable.

Comment faire ?

Merci d'avance !


Cette discussion est classée dans : problème, font, opengl, hdc, police


Répondre à ce message

Sujets en rapport avec ce message

BITMAP et OPENGL [ par Sebest ] Salut, Voila le petit problème : J'ai récupéré ce programme (http://www.cppfrance.com/article.aspx?Val=740) qui est très pratique, mais j'ai rencontré police et ListBox [ par JeriKo ] salut à tousça fait 2 heures que j'essaye de changer la police de ma listbox, y a rien à faire ça veut pas :(alors j'ai fait comme çaCListBox *list Problème OpenGL [ par GoldenEye ] Ca ressemble à un mess déjà posé mais ce n'est pas un mess déjà poséJe veux faire un prgm avec glut. J'ai mis dans les options settings de VC++ les li Ptit problème openGL... [ par Arkain ] Oui, je tenait a vous demandez quelque chose:comment faire pour afficher du tete en opengl su le haut de la fenetre? problème de texture opengl [ par kidpigeyre ] J'ai beau regardé je ne trouve pourquoi l'affichage de ma texture ne marche pas, Pouvez-vous m'aider?J'ai commenté au max mon projet pour qu'il soit c font dans mon fichier ressource [ par nipower ] Bonjour je travail avec Dev-c++ et j'ai besoin dans mon projet d'intégrer une police spéciale et non standard.Le problème et que je n'arrive pas à uti Problème de fenetres [ par Toobad ] Salut tout le monde,J'suis un ptit nouveau dans la programmation Win32 et comme on peut s'en douter pour un nouveau, j'ai un tas de problèmes. J'ai fa opengl texte [ par xarier ] Voila je voudrais realisé un texte 3d sous opengl avec une methode qui est 100% portable sur toutes les plateform Thanx Votre texte ICIVotre texte ICI pb gdi api [ par torsepoilu ] torsepoilutorsepoiluavec le code suivant, j'obtiens un rectangle sur un font bizarre au lieu d'un fond vert, je ne vois pas d'ou vien scintillement avec opengl/glut [ par seichettmorru ] j'ai un problème de scintillement sur tout mes objets lorsque j'ajoute une lumière:chaque triangle de l'objet s'affiche puis disparaitj'ai bien mis sw


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,950 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales