IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Afficher du texte dans l'espace !


Sujet :

OpenGL

  1. #1
    Membre du Club
    Homme Profil pro
    Agronome
    Inscrit en
    Septembre 2018
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Agronome
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2018
    Messages : 97
    Points : 60
    Points
    60
    Par défaut Afficher du texte dans l'espace !
    Bonjour, tous les programmes C que j'ai rencontré passe par glOrtho mais pour cette raison j'aimerais afficher mon texte sur des carrés comme ici et mieux correspondre à mon code.

    ici le lien du code ci dessous : https://www.developpez.net/forums/d1...-ecrire-texte/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    "textetext.h"
    //une texture de texte, en fait c'est 256 texture différente
    class textetext
         {
         public:
         GLuint    Numb[256];
         textetext();
         bool      Charge(const int l, const int h, char s[]);
         };
     
    "textetext.cpp"
    map<string,textetext*>   TXTS_map; //la map de toute les textures de texte chargée
    textetext*               TXTS_text;               //la texture de texte courante
     
    textetext::textetext()
         {
         glGenTextures(256, Numb);
         };//quand on créé la texture de texte on ce donne 256 numéro de texture
     
    //pour charger une texture
    bool textetext::Charge(const int l, const int h, char s[])
         {
    //la c'est le bordel un peu, il faut normalement h=l=256
         unsigned char lu[l*h*3];
         unsigned char tx[256][l/16][h/16][3];
         int u,i,j;
         FILE *f = fopen(s, "rb");
         if (f)
              {
              fread(lu, l*h*3, 1, f);
              fclose(f);
              }
         else return 0;
    //on charge la texture
         for(u=0;u<256;u++)//pour chacun des 256 caractére
              {
              for(i=0;i<l/16;i++)//on découpe un carré 16 *16
              for(j=0;j<h/16;j++)//dans la texture d'origine et à l'endroit voulu
                   {
                   tx[u][15-j][i][0]=lu[16*3*(u%16)+(u-u%16)*256*3+3*i+256*3*j];
                   tx[u][15-j][i][1]=lu[16*3*(u%16)+(u-u%16)*256*3+3*i+256*3*j+1];
                   tx[u][15-j][i][2]=lu[16*3*(u%16)+(u-u%16)*256*3+3*i+256*3*j+2];
                   }
              glBindTexture(GL_TEXTURE_2D,Numb[u]);//on attache la texture qu'on va loadé
    //on load :
              glTexImage2D(GL_TEXTURE_2D, 0,3, 16, 16, 0, GL_RGB, GL_UNSIGNED_BYTE, tx[u]);
              glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
              glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
              glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
              glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
              }
         return 1;
    //on a chargé la texture
         };
     
     
    //pour ajouter une texture (une fonte)
    bool TXTS_charge_font(string nom, char chemin[], int l, int h)
         {
         textetext *txt=new (textetext);//on créé la nouvelle fonte
         txt->Charge(l,h,chemin);//on la charge
         TXTS_map.insert(make_pair(nom,txt));//on l'insert dans la liste des fonte existante
         };
     
    bool TXTS_font(string nom)//pour utiliser une fonte
         {
         TXTS_text = TXTS_map[nom];//la fonte courante est celle de la map
         };
     
    void TXTS_print(double x, double y, const char t[])
         {//pour afficher
         int i=0;
         double dy=.05,dx=.05;
         //on active le texturing     
         float ambientProperties[4] = {1.0f, 1.0f, 1.0f, 1.0f};
         float diffuseProperties[4] = {1.0f, 1.0f, 1.0f, 1.0f};
         float positionProperties[4] = {0.0f, 0.0f, 0.0f, 0.0f};
     
         glLightfv( GL_LIGHT0, GL_AMBIENT, ambientProperties);
         glLightfv( GL_LIGHT0, GL_DIFFUSE, diffuseProperties);
         glLightfv( GL_LIGHT0, GL_POSITION, positionProperties);
     
         glEnable(GL_LIGHT0);
         glEnable(GL_LIGHTING);
     
         float Blanc[4] = {1.0f, 1.0f, 1.0f, 1.0f};
         glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, Blanc);
         glEnable(GL_TEXTURE_2D);
     
    //on parcour la chaine de caractére jusqu'a ca fin
         while(t[i]!='\0'){
    //on attache la texture qui correspond au caractére
              glBindTexture(GL_TEXTURE_2D,TXTS_text->Numb[t[i]]);
    //et on fait un carré
              glBegin(GL_QUADS);
                   glTexCoord2d(0,0); glVertex3d(x+i*dx,y,0);
                   glTexCoord2d(1,0); glVertex3d(x+i*dx+dx,y,0);
                   glTexCoord2d(1,1); glVertex3d(x+i*dx+dx,y+dy,0);
                   glTexCoord2d(0,1); glVertex3d(x+i*dx,y+dy,0);
              glEnd();
              i++;
              }
         };

  2. #2
    Membre du Club
    Homme Profil pro
    Agronome
    Inscrit en
    Septembre 2018
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Agronome
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2018
    Messages : 97
    Points : 60
    Points
    60
    Par défaut
    Déjà je ne comprend pas la partie c++ : Comment passer ceci en C ?

  3. #3
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 474
    Points
    11 474
    Billets dans le blog
    11
    Par défaut
    std::map est un conteneur associatif : Il fait le lien entre une clef (dans ton cas un std::string) et une valeur (ici un textetext*).
    Pour faire la même chose en C, il faut pas mal d'huile de coude, ou alors tu passes par un tableau contenant des structures intermédiaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct FontTexture
    {
      char * fontName;
      textetext * texture;
    } FontTexture;
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Afficher un texte dans la barre d'adresse dans charger l'URL
    Par d.w.d dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/04/2006, 11h14
  2. [VB6]Afficher du texte dans Textbox desactivé + scrollbar?
    Par toninlg dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/03/2006, 18h40
  3. Besoin d'aide pour afficher du text dans un applet
    Par argon dans le forum Applets
    Réponses: 2
    Dernier message: 15/01/2006, 21h53
  4. afficher du texte dans le champ de saisie de type file
    Par MANU_2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/09/2005, 14h59
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo