Bonjour,

Pour ceux qui veulent vite avoir du texte dans leurs fenêtre OpenGL alors qu'ils viennent de commencer à apprendre ce dernier, voici la méthode expliquée dans certains livres OpenGL.

Ceci est le code qui contient la forme de chaque lettre (placez par exemple ce code, avant votre int main()) :
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
// default FONT
const GLubyte GL_FONT_DATA[] [12]= {
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xd8, 0x90, 0x48, 0x00},	//  "
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},	//" "
{0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00},	//  !
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x48, 0xd8, 0xd8, 0x00},	//  "
{0x00, 0x00, 0x00, 0x50, 0x50, 0xfc, 0x28, 0x28, 0xfc, 0x28, 0x28, 0x00},	//  #
{0x00, 0x00, 0x20, 0x70, 0xa8, 0x28, 0x30, 0x60, 0xa0, 0xa8, 0x70, 0x20},	//  $
{0x00, 0x00, 0x00, 0x88, 0x94, 0x54, 0x28, 0x50, 0xa8, 0xa4, 0x44, 0x00},	//  %
{0x00, 0x00, 0x00, 0x74, 0x88, 0x94, 0xa0, 0x40, 0x80, 0x90, 0x60, 0x00},	//  &
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x30, 0x30, 0x00},	//  '
{0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08},	//  (
{0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40},	//  )
{0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xa8, 0x70, 0x70, 0xa8, 0x20, 0x00},	//  *
{0x00, 0x00, 0x00, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00},	//  +
{0x00, 0x20, 0x10, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},	//  ,
{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},	//  -
{0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},	//  .
{0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x00},	//  /
{0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0xc8, 0xa8, 0x98, 0x88, 0x70, 0x00},	//  0
{0x00, 0x00, 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xa0, 0x60, 0x20, 0x00},	//  1
{0x00, 0x00, 0x00, 0xf8, 0x80, 0x40, 0x20, 0x10, 0x08, 0x88, 0x70, 0x00},	//  2
{0x00, 0x00, 0x00, 0x70, 0x88, 0x08, 0x08, 0x30, 0x08, 0x88, 0x70, 0x00},	//  3
{0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0xf8, 0x90, 0x50, 0x30, 0x10, 0x00},	//  4
{0x00, 0x00, 0x00, 0xf0, 0x08, 0x08, 0x88, 0xf0, 0x80, 0x80, 0xf8, 0x00},	//  5
{0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0xf0, 0x80, 0x40, 0x30, 0x00},	//  6
{0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x10, 0x10, 0x08, 0x88, 0xf8, 0x00},	//  7
{0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70, 0x00},	//  8
{0x00, 0x00, 0x00, 0x60, 0x10, 0x08, 0x78, 0x88, 0x88, 0x88, 0x70, 0x00},	//  9
{0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00},	//  :
{0x00, 0x20, 0x10, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00},	//  ;
{0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00},	//  <
{0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00},	//  =
{0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00},	//  >
{0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x10, 0x08, 0x88, 0x70, 0x00},	//  ?
{0x00, 0x00, 0x00, 0x38, 0x40, 0x98, 0xa8, 0xa8, 0x98, 0x48, 0x30, 0x00},	//  @
{0x00, 0x00, 0x00, 0x88, 0x88, 0xf8, 0x50, 0x50, 0x20, 0x20, 0x20, 0x00},	//  A
{0x00, 0x00, 0x00, 0xf0, 0x88, 0x88, 0x88, 0xf0, 0x88, 0x88, 0xf8, 0x00},	//  B
{0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0x80, 0x80, 0x80, 0x88, 0x70, 0x00},	//  C
{0x00, 0x00, 0x00, 0xe0, 0x90, 0x88, 0x88, 0x88, 0x88, 0x90, 0xe0, 0x00},	//  D
{0x00, 0x00, 0x00, 0xf8, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0xf8, 0x00},	//  E
{0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0xf8, 0x00},	//  F
{0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x98, 0x80, 0x80, 0x88, 0x70, 0x00},	//  G
{0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0x00},	//  H
{0x00, 0x00, 0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00},	//  I
{0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x08, 0x08, 0x08, 0x08, 0x78, 0x00},	//  J
{0x00, 0x00, 0x00, 0x88, 0x90, 0xa0, 0xc0, 0xc0, 0xa0, 0x90, 0x88, 0x00},	//  K
{0x00, 0x00, 0x00, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00},	//  L
{0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0xa8, 0xd8, 0xd8, 0x88, 0x00},	//  M
{0x00, 0x00, 0x00, 0x88, 0x98, 0x98, 0xa8, 0xa8, 0xc8, 0xc8, 0x88, 0x00},	//  N
{0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00},	//  O
{0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xf0, 0x88, 0x88, 0x88, 0xf0, 0x00},	//  P
{0x00, 0x0c, 0x10, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00},	//  Q
{0x00, 0x00, 0x00, 0x88, 0x90, 0xa0, 0xf0, 0x88, 0x88, 0x88, 0xf0, 0x00},	//  R
{0x00, 0x00, 0x00, 0x70, 0x88, 0x08, 0x08, 0x70, 0x80, 0x88, 0x70, 0x00},	//  S
{0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x00},	//  T
{0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00},	//  U
{0x00, 0x00, 0x00, 0x20, 0x20, 0x50, 0x50, 0x88, 0x88, 0x88, 0x88, 0x00},	//  V
{0x00, 0x00, 0x00, 0x50, 0x50, 0x50, 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x00},	//  W
{0x00, 0x00, 0x00, 0x88, 0x88, 0x50, 0x20, 0x20, 0x50, 0x88, 0x88, 0x00},	//  X
{0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0x88, 0x00},	//  Y
{0x00, 0x00, 0x00, 0xf8, 0x80, 0x40, 0x20, 0x20, 0x10, 0x08, 0xf8, 0x00},	//  Z
{0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x00},	//  [
{0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x00},	//  \               */
{0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00},	//  ]
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x50, 0x50, 0x20, 0x20, 0x00},	//  ^
{0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},	//  _
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00},	//  `
{0x00, 0x00, 0x00, 0x68, 0x98, 0x88, 0x88, 0x88, 0x78, 0x00, 0x00, 0x00},	//  a
{0x00, 0x00, 0x00, 0xf0, 0x88, 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00},	//  b
{0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0x80, 0x88, 0x70, 0x00, 0x00, 0x00},	//  c
{0x00, 0x00, 0x00, 0x68, 0x98, 0x88, 0x88, 0x88, 0x78, 0x08, 0x08, 0x00},	//  d
{0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0xf8, 0x88, 0x70, 0x00, 0x00, 0x00},	//  e
{0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xf0, 0x40, 0x30, 0x00},	//  f
{0x00, 0x70, 0x08, 0x68, 0x98, 0x88, 0x88, 0x88, 0x78, 0x00, 0x00, 0x00},	//  g
{0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00},	//  h
{0x00, 0x00, 0x00, 0x30, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x20, 0x00},	//  i
{0x00, 0xe0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00, 0x10, 0x00},	//  j
{0x00, 0x00, 0x00, 0x88, 0x90, 0xa0, 0xc0, 0xa0, 0x90, 0x80, 0x80, 0x00},	//  k
{0x00, 0x00, 0x00, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00},	//  l
{0x00, 0x00, 0x00, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xd0, 0x00, 0x00, 0x00},	//  m
{0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0xc8, 0xb0, 0x00, 0x00, 0x00},	//  n
{0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00},	//  o
{0x00, 0x80, 0x80, 0xf0, 0x88, 0x88, 0x88, 0xc8, 0xb0, 0x00, 0x00, 0x00},	//  p
{0x00, 0x08, 0x08, 0x68, 0x98, 0x88, 0x88, 0x88, 0x78, 0x00, 0x00, 0x00},	//  q
{0x00, 0x00, 0x00, 0xe0, 0x40, 0x40, 0x40, 0x60, 0xd8, 0x00, 0x00, 0x00},	//  r
{0x00, 0x00, 0x00, 0x70, 0x88, 0x10, 0x60, 0x88, 0x70, 0x00, 0x00, 0x00},	//  s
{0x00, 0x00, 0x00, 0x30, 0x48, 0x40, 0x40, 0x40, 0xf0, 0x40, 0x40, 0x00},	//  t
{0x00, 0x00, 0x00, 0x68, 0x98, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00},	//  u
{0x00, 0x00, 0x00, 0x20, 0x20, 0x50, 0x50, 0x88, 0x88, 0x00, 0x00, 0x00},	//  v
{0x00, 0x00, 0x00, 0x50, 0x50, 0xa8, 0xa8, 0x88, 0x88, 0x00, 0x00, 0x00},	//  w
{0x00, 0x00, 0x00, 0x88, 0x50, 0x20, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00},	//  x
{0x00, 0x80, 0x40, 0x20, 0x20, 0x50, 0x50, 0x88, 0x88, 0x00, 0x00, 0x00},	//  y
{0x00, 0x00, 0x00, 0xf8, 0x80, 0x40, 0x20, 0x10, 0xf8, 0x00, 0x00, 0x00},	//  z
{0x18, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x20, 0x20, 0x20, 0x20, 0x18, 0x00},	//  {
{0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20},	//  |
{0xc0, 0x20, 0x20, 0x20, 0x20, 0x18, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00},	//  }
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x64, 0x00, 0x00, 0x00, 0x00}}; //  ~
Et la fonction pour écrire dans une fenêtre OpenGL (placez par exemple ce code, avant votre int main()) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
void myText(int x, int y, string text)
{
	glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
	glRasterPos2i(x,y+12);
	for( int i = 0; i < text.size(); ++i )
	glBitmap(6, 12, 0.0, 0.0, 7, 0.0, GL_FONT_DATA[text[i]-31] );
}
Pour l'utiliser, vous devez être en mode orthographique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D( 0, 800, 600, 0 ); // Taille de la fenêtre, 800x600 pixels
 
 
// Notre texte !
myText( 50, 60, "Balance le texte !" ); // la position du texte est à 50 pixels en partant de gauche et 60 pixels en partant de haut
Et, le résultat (vous pouvez cliquer pour voir la scène entière) :


Si vous voyez des fautes ou erreurs, n'hésitez pas à m'en faire part, je corrigerai au plus vite, merci.