Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 6 juil. 2005 à 11:05
c'est faisable de toute facon, comment crois-tu que les OSes font?
c'est valable pour tous les OSes qui supportent le .ttf: pour Windows, UNIX je suis sur que c'est implémenté par défault , pour Mac aucune idée
de plus ya une lib, freetype2, qui fait ca , de maniere portable en plus, mais j'ai pas réussi a la faire marcher sinon je l'aurai utilisée.
++
kortin
Messages postés65Date d'inscriptiondimanche 27 juillet 2003StatutMembreDernière intervention21 avril 2006 6 juil. 2005 à 09:19
Je me demande si il est possible de creer une serie de fonctions qui affichent du texte à partir des fichiers .ttf contenu dans c:\winnt.
Je pense que ce serait faisable sous windows. Par contre sous linux, je ne sais pas comment ça se passe. J'aimerai bien être fixé pour savoir si ça vaut le coup d'essayer. Quelqu'un est au courant ?
T_Mehdi
Messages postés294Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention24 juillet 2015 4 juil. 2005 à 15:11
mdr :D,la variable a_data conteint les donné d'une image bmp ^^ donc ca revien au meme.
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 4 juil. 2005 à 13:35
wow !
vi effectivement ^^ c'est un peu bourrin je trouve ^^
kortin
Messages postés65Date d'inscriptiondimanche 27 juillet 2003StatutMembreDernière intervention21 avril 2006 4 juil. 2005 à 09:24
Pour l'instant, j'ai vu un seul projet qui affiche du texte sans bitmap. Vous pouvez le trouvez le trouver dans glut : glut\progs\demos\ideas
Là, c'est spécial, il y a en fait la définition de chaque lettre.
exemple, la lettre a:
Autant dire que ce n'est pas la meilleur façon de programmer ça.
T_Mehdi
Messages postés294Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention24 juillet 2015 2 juil. 2005 à 21:37
we c vraie j'ai juste copiez coller la classe pour l'affichage du texte donc (pour ce qui est du devil c vraie j'ai pas f attention je croyai que je lavait inseré^^)
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 2 juil. 2005 à 20:43
heu ...
^^
t'as pas tout compris la :D
1 -> je ne veux pas de Devil ni d'aucune autre lib de chargement
2 -> ton code n'a rien a voir avec Devil
3 -> ton code n'a rien a voir avec ce qui est pas portable
4 -> a peu de choses pres j'ai déja ce code
5 -> c'est d'ailleurs le code basique, que j'ai évité dans cette source, de Nehe, pour ce genre de chose, ce qui te ramene a la présentation de cette source
6 -> merci qd meme :D
++
ad
T_Mehdi
Messages postés294Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention24 juillet 2015 2 juil. 2005 à 19:53
Comme tu chercher un code 100% portable en voila un qui utilise la lib opengl+devil(pour le chargement des texture)
void BuildFont(int X_Axes=15, int Y_Axes=0,int SizeOfFont=20) // Creé notre list de caractaire depuis bmp
{
float cx;
float cy;
Tbase=glGenLists(256); // Creé 256 Display Lists
glBindTexture(GL_TEXTURE_2D,Font);
for (UINT loop=0; loop<256; loop++) // Boucle 256 (Lists)
{
cx=float(loop%16)/16.0f;// Position X du Caracter
cy=float(loop/16)/16.0f;// Position Y du Caracter
glNewList(Tbase+loop,GL_COMPILE);//Commence la creation de la list
glBegin(GL_QUADS); // Utilisé un Carré pour chaque caractaire
glTexCoord2f(cx,1-cy-0.0525f);
glVertex2i(0,0);
glTexCoord2f(cx+0.0625f,1-cy-0.0625f);
glVertex2i(SizeOfFont,0);
glTexCoord2f(cx+0.0625f,1-cy);
glVertex2i(SizeOfFont,SizeOfFont);
glTexCoord2f(cx,1-cy);
glVertex2i(0,SizeOfFont);
glEnd();// Terminé le dessin du carré
glTranslated(X_Axes,Y_Axes,0);//Espace entre chaque caractére
glEndList();// Terminé le dessin de la list
}
}
void KillFont(GLvoid)
{
glDeleteLists(Tbase,256); // Efface les 256 lists
}
void PrintText(PWI_Point2D Position, char *String, PW_Color4 Color,bool Blood,bool Transparent=false)
{
glBindTexture(GL_TEXTURE_2D,Font);// applique Texture de font
glTranslated(Position.X,Position.Y,0);// Position le Texte
glListBase(Tbase-32+(128*Blood));//Choix du Fonts Normal->0 Gras->1
if (Transparent==true)
{
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE);
}
Color.SetColor();
glCallLists(strlen(String),GL_BYTE,String); // Ecrire le texte
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 2 juil. 2005 à 19:53
qu'est-ce qu'il a la nom de la fenetre? je vais qd meme pas m'embeter a retaper tout le basecode chaque fois! celui de NeHe est pas mal fait du tout et comme ya un wizard pour VC6 en 2 clics le projet est créé!
++
ad
NoRabbit
Messages postés224Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention30 mars 2009 2 juil. 2005 à 17:58
sympa
Taranael
Messages postés54Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention21 juin 20071 2 juil. 2005 à 14:00
Pour ce qui est de la source j'ai pas encore jeté un oeil mais en regardant la capture d'écran j'ai pas pu m'empêcher de rire en voyant le nom de la fenêtre :D
Je vais aller jeter un oeil dans le code voir si c'est de mon niveau parce que pour la qualité je me fais pas trop de soucis :D
++ Taranael
6 juil. 2005 à 11:05
c'est valable pour tous les OSes qui supportent le .ttf: pour Windows, UNIX je suis sur que c'est implémenté par défault , pour Mac aucune idée
de plus ya une lib, freetype2, qui fait ca , de maniere portable en plus, mais j'ai pas réussi a la faire marcher sinon je l'aurai utilisée.
++
6 juil. 2005 à 09:19
Je pense que ce serait faisable sous windows. Par contre sous linux, je ne sais pas comment ça se passe. J'aimerai bien être fixé pour savoir si ça vaut le coup d'essayer. Quelqu'un est au courant ?
4 juil. 2005 à 15:11
4 juil. 2005 à 13:35
vi effectivement ^^ c'est un peu bourrin je trouve ^^
4 juil. 2005 à 09:24
Là, c'est spécial, il y a en fait la définition de chaque lettre.
exemple, la lettre a:
#include <GL/glut.h>
static float a_data[][2] = {
{5.618949, 10.261048},
{5.322348, 9.438848},
{5.124614, 10.030832},
{4.860968, 9.488181},
{4.811534, 9.932169},
{3.938208, 9.438848},
{3.658084, 9.685509},
{2.784758, 8.994862},
{2.801236, 9.175745},
{1.960865, 8.172662},
{1.186406, 7.761562},
{1.252317, 6.561151},
{0.576725, 6.610483},
{0.939238, 5.525180},
{0.164779, 4.883864},
{0.840371, 4.818089},
{0.230690, 3.963001},
{0.939238, 4.242549},
{0.609681, 3.255909},
{1.268795, 3.963001},
{1.021627, 3.075026},
{1.861998, 4.045221},
{1.829042, 3.535457},
{2.817714, 4.818089},
{3.163749, 4.998972},
{3.971164, 6.643371},
{4.267765, 6.725591},
{4.663234, 7.630010},
{5.404737, 9.734840},
{4.646756, 9.669065},
{5.108136, 8.731757},
{4.679712, 8.600205},
{4.926879, 7.564234},
{4.366632, 6.692703},
{4.663234, 5.344296},
{3.888774, 4.850976},
{4.630278, 4.094553},
{3.954686, 3.963001},
{4.828012, 3.798561},
{4.168898, 3.321686},
{5.157569, 3.864337},
{4.514933, 3.091470},
{5.553038, 4.045221},
{5.305870, 3.634121},
{5.932029, 4.176773},
};
void draw_a(void) {
glBegin(GL_TRIANGLE_STRIP);
glVertex2fv(a_data[0]);
glVertex2fv(a_data[1]);
glVertex2fv(a_data[2]);
glVertex2fv(a_data[3]);
glVertex2fv(a_data[4]);
glVertex2fv(a_data[5]);
glVertex2fv(a_data[6]);
glVertex2fv(a_data[7]);
glVertex2fv(a_data[8]);
glVertex2fv(a_data[9]);
glVertex2fv(a_data[10]);
glVertex2fv(a_data[11]);
glVertex2fv(a_data[12]);
glVertex2fv(a_data[13]);
glVertex2fv(a_data[14]);
glVertex2fv(a_data[15]);
glVertex2fv(a_data[16]);
glVertex2fv(a_data[17]);
glVertex2fv(a_data[18]);
glVertex2fv(a_data[19]);
glVertex2fv(a_data[20]);
glVertex2fv(a_data[21]);
glVertex2fv(a_data[22]);
glVertex2fv(a_data[23]);
glVertex2fv(a_data[24]);
glVertex2fv(a_data[25]);
glVertex2fv(a_data[26]);
glVertex2fv(a_data[27]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glVertex2fv(a_data[28]);
glVertex2fv(a_data[29]);
glVertex2fv(a_data[30]);
glVertex2fv(a_data[31]);
glVertex2fv(a_data[32]);
glVertex2fv(a_data[33]);
glVertex2fv(a_data[34]);
glVertex2fv(a_data[35]);
glVertex2fv(a_data[36]);
glVertex2fv(a_data[37]);
glVertex2fv(a_data[38]);
glVertex2fv(a_data[39]);
glVertex2fv(a_data[40]);
glVertex2fv(a_data[41]);
glVertex2fv(a_data[42]);
glVertex2fv(a_data[43]);
glVertex2fv(a_data[44]);
glEnd();
glBegin(GL_LINE_STRIP);
glVertex2fv(a_data[0]);
glVertex2fv(a_data[2]);
glVertex2fv(a_data[4]);
glVertex2fv(a_data[6]);
glVertex2fv(a_data[8]);
glVertex2fv(a_data[10]);
glVertex2fv(a_data[12]);
glVertex2fv(a_data[14]);
glVertex2fv(a_data[16]);
glVertex2fv(a_data[18]);
glVertex2fv(a_data[20]);
glVertex2fv(a_data[22]);
glVertex2fv(a_data[24]);
glVertex2fv(a_data[26]);
glVertex2fv(a_data[27]);
glVertex2fv(a_data[25]);
glVertex2fv(a_data[23]);
glVertex2fv(a_data[21]);
glVertex2fv(a_data[19]);
glVertex2fv(a_data[17]);
glVertex2fv(a_data[15]);
glVertex2fv(a_data[13]);
glVertex2fv(a_data[11]);
glVertex2fv(a_data[9]);
glVertex2fv(a_data[7]);
glVertex2fv(a_data[5]);
glVertex2fv(a_data[3]);
glVertex2fv(a_data[1]);
glEnd();
glBegin(GL_LINE_STRIP);
glVertex2fv(a_data[28]);
glVertex2fv(a_data[30]);
glVertex2fv(a_data[32]);
glVertex2fv(a_data[34]);
glVertex2fv(a_data[36]);
glVertex2fv(a_data[38]);
glVertex2fv(a_data[40]);
glVertex2fv(a_data[42]);
glVertex2fv(a_data[44]);
glVertex2fv(a_data[43]);
glVertex2fv(a_data[41]);
glVertex2fv(a_data[39]);
glVertex2fv(a_data[37]);
glVertex2fv(a_data[35]);
glVertex2fv(a_data[33]);
glVertex2fv(a_data[31]);
glVertex2fv(a_data[29]);
glEnd();
}
Autant dire que ce n'est pas la meilleur façon de programmer ça.
2 juil. 2005 à 21:37
2 juil. 2005 à 20:43
^^
t'as pas tout compris la :D
1 -> je ne veux pas de Devil ni d'aucune autre lib de chargement
2 -> ton code n'a rien a voir avec Devil
3 -> ton code n'a rien a voir avec ce qui est pas portable
4 -> a peu de choses pres j'ai déja ce code
5 -> c'est d'ailleurs le code basique, que j'ai évité dans cette source, de Nehe, pour ce genre de chose, ce qui te ramene a la présentation de cette source
6 -> merci qd meme :D
++
ad
2 juil. 2005 à 19:53
#ifndef _Text_H_
#define _Text_H_
extern ProWiz::MainApp* GAME;
extern bool STATE[10];
namespace ProWiz
{
namespace IO
{
class GuiText
{
UINT Tbase;
public :
int Font;
void BuildFont(int X_Axes=15, int Y_Axes=0,int SizeOfFont=20) // Creé notre list de caractaire depuis bmp
{
float cx;
float cy;
Tbase=glGenLists(256); // Creé 256 Display Lists
glBindTexture(GL_TEXTURE_2D,Font);
for (UINT loop=0; loop<256; loop++) // Boucle 256 (Lists)
{
cx=float(loop%16)/16.0f;// Position X du Caracter
cy=float(loop/16)/16.0f;// Position Y du Caracter
glNewList(Tbase+loop,GL_COMPILE);//Commence la creation de la list
glBegin(GL_QUADS); // Utilisé un Carré pour chaque caractaire
glTexCoord2f(cx,1-cy-0.0525f);
glVertex2i(0,0);
glTexCoord2f(cx+0.0625f,1-cy-0.0625f);
glVertex2i(SizeOfFont,0);
glTexCoord2f(cx+0.0625f,1-cy);
glVertex2i(SizeOfFont,SizeOfFont);
glTexCoord2f(cx,1-cy);
glVertex2i(0,SizeOfFont);
glEnd();// Terminé le dessin du carré
glTranslated(X_Axes,Y_Axes,0);//Espace entre chaque caractére
glEndList();// Terminé le dessin de la list
}
}
void KillFont(GLvoid)
{
glDeleteLists(Tbase,256); // Efface les 256 lists
}
void PrintText(PWI_Point2D Position, char *String, PW_Color4 Color,bool Blood,bool Transparent=false)
{
glBindTexture(GL_TEXTURE_2D,Font);// applique Texture de font
glTranslated(Position.X,Position.Y,0);// Position le Texte
glListBase(Tbase-32+(128*Blood));//Choix du Fonts Normal->0 Gras->1
if (Transparent==true)
{
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE);
}
Color.SetColor();
glCallLists(strlen(String),GL_BYTE,String); // Ecrire le texte
if(STATE[ProWiz::State::BLENDING]==false)glDisable(GL_BLEND);
}
};
}
}
#endif
2 juil. 2005 à 19:53
++
ad
2 juil. 2005 à 17:58
2 juil. 2005 à 14:00
Je vais aller jeter un oeil dans le code voir si c'est de mon niveau parce que pour la qualité je me fais pas trop de soucis :D
++ Taranael