Salut,
je voudrais ecrire une phrase en openGL, c'est chaud d'après ce que j'ai pu voir sur les sites...
les bouts de codes que j'ai assemblé ne semblent pas vouloir fonctionner,
si quelqu'un a la sol
Merci d'av A+
Mau 8)
Salut,
je voudrais ecrire une phrase en openGL, c'est chaud d'après ce que j'ai pu voir sur les sites...
les bouts de codes que j'ai assemblé ne semblent pas vouloir fonctionner,
si quelqu'un a la sol
Merci d'av A+
Mau 8)
un site avec de tres bons tutorials sur openGL en general
http://nehe.gamedev.net/
la page ou ya l'affichage de texte (qui marche, j'ai deja testé ...)
http://nehe.gamedev.net/opengl3.asp
ce se base sur le principe des bitmaps fonts = on affiche des bitmaps pour les lettres
Si tu utilise glut, il y a une fonction toute faite :
exemple: affichage de fps
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 glPushMatrix(); glLoadIdentity(); glRasterPos3f(-0.4f,-0.4f,-1.); sprintf ( strfps, "%d fps\0", old_fps ); for (unsigned int i=0;i<strlen(strfps);i++) glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,*(strfps+i)); glPopMatrix();
c'est pourquoi faire ton sprintf ????
je l'ai jms utilisé ma apparemment
int sprintf(char *buffer, const char *format[, argument, ...]);
je premier argument est le buffer, apres tu mets le code format, oki, ms pourquoi un %d. Tu veux afficher le code ascii ????
et apres le derniers parametre je suis completement out, "old_fps" est fait pourquoi ???
sinon cela reste tout a fait comprehensible, tu as un char *, tu incremente l'adresse et tu utilises l'operateur d'indirection. Tu aurais pu utiliser une ecriture plus naturelle, strfps[i], pour eviter une erreur ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for (unsigned int i=0;i<strlen(strfps);i++) glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,*(strfps+i));
glutBitmapCharacter fonctionne un peu comme glutBitmap ou tu mets un tableau (ou plutot l'adresse d'un tableau d'hexadecimal)
Ou définit on l'ecart entre les lettres, glRasterPos3f(-0.4f,-0.4f,-1.); te permet de te positioner ms en aucun cas, j'ai vu l'ecart entre les lettres ...
Existe t'il aussi une bibio, class C++ pour ecrire les chiffrees ???
grhhh, j'ai cette erreur et je sais pas ce qu'il faut déclarer
Error: main.cpp(68,44):Undefined symbol 'old_fps'
sinon j'ai mis le include stdio.h pour le sprintf
et déclaré strfps en char *strfps;
salut,
le code de exxos n'a rien d'étrange, il sagit juste d'un fragment de programme ou tu ne vois pas la déclaration de strfps et old_fps.
sprintf permet de formater une chaîne de caractère => %d indique que l'argument old_fps devra être considéré comme un décimal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 glPushMatrix(); glLoadIdentity(); glRasterPos3f(-0.4f,-0.4f,-1.); sprintf ( strfps, "%d fps\0", old_fps ); for (unsigned int i=0;i<strlen(strfps);i++) glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,*(strfps+i)); glPopMatrix();
bon pour t'éviter de te concentrer ou tu ne devrais pasvoici le même exemple sans ce
qui a l'air de te déranger
Code : Sélectionner tout - Visualiser dans une fenêtre à part sprintf ( strfps, "%d fps\0", old_fps );![]()
A bientôt,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 char strMsg[15] = {0}; char strMsgArg[] = "messages"; glPushMatrix(); glLoadIdentity(); glRasterPos3f(-0.4f,-0.4f,-1.); sprintf ( strMsg, "déjà %d %s", 5, strMsgArg); for (unsigned int i=0;i<strlen(strMsg);i++) glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,*(strMsg+i)); glPopMatrix();
la je suis impressionné je pensais pas que l'on pouvais ecrire sous opengl, ca fonctionne du tonnere
j'ai tjrs pas compris, le strMsg, c'est quoi. Tu as créé un tableau de carartère et tu as initialisé le premier élément à 0.
pourquoi, cela m'affiche dj dans : dj 5message
je suis novice en opengl, pourquoi lorsque j'affiche avec glRasterPos2f(0.0f,0.0f); cela m'affiche pas tout en bas à gauche comme autres éléments.
EDIT : pourtant j'ai mis les glPushMatrix(); et glpopmatrix()
re,
strMsg est une chaînes de caractère avec de la place pour 15 caractères.
Une chaîne de caractère ce termine tjrs par \0.
En écrivantje met \0 à la première position pr l'initialiser correctement et éviter les crasses mémoires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part char strMsg[15] = {0};
Pour le dj, c pas grave c juste que les caractères avec accents ne sont pas gérés essaye deja.
et pour
C tout à fait normale, ca doit écrire en haut à gauche c comme ca que ca marche.pourquoi lorsque j'affiche avec glRasterPos2f(0.0f,0.0f); cela m'affiche pas tout en bas à gauche comme autres éléments.
A bientôt,
Code : Sélectionner tout - Visualiser dans une fenêtre à part char strMsg[15] = {0};oui justement, ne faut il pas le mettre au dernier element, c'est a dire strMsg[14] = '\0';je met \0 à la première position pr l'initialiser correctement et éviter les crasses mémoires.
0 c'est la meme chose que '\0', je savais pas ...
euhh est tu sur que chez moi ca affiche en faite en plein millieu de la fenetreC tout à fait normale, ca doit écrire en haut à gauche c comme ca que ca marche.
EDIT : je pense que c'est pour que tu as mis de nb négatif sur ton premier post
Code : Sélectionner tout - Visualiser dans une fenêtre à part glRasterPos3f(-0.4f,-0.4f,-1.);
re,
précision ce n'est pas mon premier post![]()
et sorry pr mon erreur![]()
C tout à fait normale, ca doit écrire en haut à gauche c comme ca que ca marche.
++![]()
premier post ds le topic de Mau
je suppose que l'on peut pas indiquer l'espace entre les caractères sinon j'ai vu que l'on pouvait definir la largeur et heuteur de la police
et le time roman est dispo aussi comme policeGLUT_BITMAP_8_BY_13
A fixed width font with every character fitting in an 8 by 13 pixel rectangle
source : http://pyopengl.sourceforge.net/documentation/manual/glutBitmapCharacter.3GLUT.htmlGLUT_BITMAP_TIMES_ROMAN_24
A 24-point proportional spaced Times Roman font.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager