cs_mat74
Messages postés241Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention16 juin 2010
-
16 oct. 2004 à 15:38
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
16 oct. 2004 à 22:48
salut a ts
voila j'ai un petit pb avec l'ecriture 3d en opengl , n'importe quel valeur que je mette ds le 1er param de createfont ne change pas la taille de l'ecriture de quoi peut venir ce pb ?
voila les fonctions que j'utilisent
void BuildFont() // Build Our Bitmap Font
{
HFONT font;
base = glGenLists(256); // Storage For 256 Characters
font = CreateFont( 12, // Height Of Font
0, // Width Of Font
0, // Angle Of Escapement
0, // Orientation Angle
FW_BOLD, // Font Weight
false, // italique
false, // souligné
false, // barré
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
"Comic sans MS"); // Font Name
SelectObject(DC, font); // Selects The Font We Created
wglUseFontOutlines( DC, // Select The Current DC
0, // Starting Character
255, // Number Of Display Lists To Build
base, // Starting Display Lists
0.0f, // Deviation From The True Outlines
0.2f, // Font Thickness In The Z Direction
WGL_FONT_POLYGONS, // Use Polygons, Not Lines
gmf); // Address Of Buffer To Recieve Data
}
void glPrint(const char *fmt, ...) // Custom GL "Print" Routine
{
float length=0; // Used To Find The Length Of The Text
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
for (unsigned int loop=0;loop<(strlen(text));loop++) // Loop To Find Text Length
{
length+=gmf[text[loop]].gmfCellIncX; // Increase Length By Each Characters Width
}
glTranslatef(-length/2,0.0f,0.0f); // Center Our Text On The Screen
glPushAttrib(GL_LIST_BIT); // Pushes The Display List Bits
glListBase(base); // Sets The Base Character to 0
glCallLists(strlen(text), GL_UNSIGNED_BYTE, text); // Draws The Display List Text
glPopAttrib(); // Pops The Display List Bits
}
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 16 oct. 2004 à 18:06
beark!
les bitmaps fonts de nehe..
enfin bon...
je ne sais pas vraiement mais essaye de mettre glPushMatrix();glScalef(taille,taille,taille);avant le glTranslatef(); et de finir par glPopMatrix();
perso j'utilise pas ca a cause du DC (j'utilise sdl justement pour éviter de galérer avec), et les TGA fonts c'est tres bien aussi... non? si....
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 16 oct. 2004 à 22:48
http://www.cppfrance.com/code.aspx?ID=19598 est une de mes sources, les utilise;mais la texture n'est pas belle.
bitmapFontBuilder crée des textures tga
fais un saut sur ma source ou sur le site de belzel (Cube 2.0; google est ton ami)
en gros, le tga c'est une image avec transparence (voir alphaedit de funto).
le logiciel bitmapFontBuilder crée une texture en .tga avec dessus tout l'alphabet (voir 2! tres pratique.)
Ensuite tu le charges ds ton prog, a l'init tu fait BuildFont();, et ds ta boucle tu fais SET_TEXT_MODE, puis glText(...);, puis UNSET_TEXT_MODE.
seulement, si tu fais ca, ca marchera pas. hé oui!la fonction a beau s'appeler glText, c'est moi qui l'ai faite (enfin non, c'est belzel, ms je l'ai pas mal changée)
Envoies-moi ton mail, je t'enverrai un zip.
avec ca tu pourra charger une tga, créer autant de polices que tu veux (moi j'en utilise 4!!! ds le meme prog!!!), afficher une image, la tourner...la totale quoi!
PS: ne reprends pas directement la source de fly (mon jeu), en fait elle est nulle :)
je l'ai (en partie) réécrite et elle marche super bien maintenant.
Ciao
et fais moi plaisir, ne touche plus a ces satanées bitmaps fonts ;) lol (en fait j'ai rien contre, juste ce stupide DC...)