Du texte sur une texture opengl

Soyez le premier à donner votre avis sur cette source.

Vue 7 988 fois - Téléchargée 652 fois

Description

Attention code non portable, win32 uniquement. si quelqu'un sait le porter a Linux (au minimum) je suis preneur, je n'attends que ca

ce code sert a créer une texture openGL avec du texte dessus...atention contrairement a certains codes existantson ne fait pas un copier-coller de caracreres venant d'une texture de 1Mo sur le disque. tout est créé dynamiquement, de maniere tres simple pour l'utilisateur.
le but, a terme,de toutes mes sources a venir, est d'éviter de charger a partir du disque le maximum de fichiers
cela se fera au détriment du temps de chargement, mais ca je m'en fiche (pour ce que je veux faire)

Conclusion :


c'est sur ce code qu'est basé mes prochaines sources mais je peux pas encore les poster elles sont pas finies
ps: vous verrez je me suis pas foulé pour l'affichage ^^ le but était de montrer l'utilisation du .h

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
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.
++
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006

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 ?
Messages postés
294
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
24 juillet 2015

mdr :D,la variable a_data conteint les donné d'une image bmp ^^ donc ca revien au meme.
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
wow !
vi effectivement ^^ c'est un peu bourrin je trouve ^^
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006

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:

#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.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.