Ecriture 3d

cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 16 oct. 2004 à 15:38
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 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
}

merci d'avance
@+

3 réponses

Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
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....

Ciao
BB
0
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
16 oct. 2004 à 22:10
merci de m'avoir repondu

qu'es-ce que c'est que les tga fonts ? je connais pas du tt
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
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...)
0
Rejoignez-nous