vodkapomme43
Messages postés31Date d'inscriptionmardi 14 septembre 2004StatutMembreDernière intervention 3 juin 2008
-
5 mars 2005 à 14:11
nisaloncaje
Messages postés154Date d'inscriptionsamedi 7 janvier 2006StatutMembreDernière intervention28 septembre 2008
-
25 juin 2006 à 12:19
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
gnoofy120
Messages postés17Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention14 juin 2006 6 mars 2005 à 07:21
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.
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 6 mars 2005 à 17:54
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
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....
Vous n’avez pas trouvé la réponse que vous recherchez ?
nisaloncaje
Messages postés154Date d'inscriptionsamedi 7 janvier 2006StatutMembreDernière intervention28 septembre 2008 25 juin 2006 à 12:19
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.