GL Studio C++ Runtime API
gls_font_renderer.h
Go to the documentation of this file.
1 /*! \file
2  \brief The disti::GlsFontRenderer class and related classes.
3 
4  \par Copyright Information
5 
6  Copyright (c) 2017 by The DiSTI Corporation.<br>
7  11301 Corporate Blvd; Suite 100<br>
8  Orlando, Florida 32817<br>
9  USA<br>
10  <br>
11  All rights reserved.<br>
12 
13  This Software contains proprietary trade secrets of DiSTI and may not be
14 reproduced, in whole or part, in any form, or by any means of electronic,
15 mechanical, or otherwise, without the written permission of DiSTI. Said
16 permission may be derived through the purchase of applicable DiSTI product
17 licenses which detail the distribution rights of this content and any
18 Derivative Works based on this or other copyrighted DiSTI Software.
19 
20  NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND,
21 AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT
22 PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES
23 AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
24 IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A
25 PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.
26 
27  LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,
28 IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
29 INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
30 DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
31 INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
32 INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY
33 OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT
34 EXCEED FIVE DOLLARS (US$5.00).
35 
36  The aforementioned terms and restrictions are governed by the laws of the
37 State of Florida and the United States of America.
38 
39 */
40 #ifndef _GLS_FONT_RENDERER_H
41 #define _GLS_FONT_RENDERER_H
42 
43 #include "gls_gl.h"
44 #include <string>
45 #include <vector>
46 #ifdef GLES
47 # include "gls_quad_storage.h"
48 # include "gls_state_manager.h"
49 #endif
50 #include "IFontImage.h"
51 #include "gls_color.h"
52 #include "gls_font_base.h"
53 #include "image.h"
54 #include "vertex.h"
55 
56 //===========================================================================
57 // BEGIN NAMESPACE
58 //===========================================================================
59 namespace disti
60 {
61 //---------------------------------------------------------------------------
62 // FORWARD REFERENCES
63 //---------------------------------------------------------------------------
64 class VertexNoColor;
65 class GlsColor;
66 class Image;
67 
68 typedef VertexNoColor Vector;
69 
70 //===========================================================================
71 /**
72 *
73 * The GlsFontRenderer object can be used to render characters from a GlsFontBase in
74 * Open GL at specific locations and with several different text effects.
75 * Prior to rendering any characters, InitRendering must be invoked to set
76 * up the proper drawing environment. Then call Render for each character
77 * to be drawn.
78 *
79 * \sa GlsFontBase
80 *
81 */
82 //===========================================================================
84 {
85 public:
86  typedef GlsFontBase::Char_t Char_t;
88 
89  //----------------------------------------
90  // Character rendering state variables
91  //----------------------------------------
92 
93  /** Returns the minification filter for this font */
94  unsigned char TextureMinFilter()
95  {
96  return _textureMinFilter;
97  }
98 
99  /** Sets the minification filter for this font */
100  void TextureMinFilter( unsigned char val )
101  {
102  _textureMinFilter = val;
103  }
104 
105  /** Returns the magnification filter for this font */
106  unsigned char TextureMagFilter()
107  {
108  return _textureMagFilter;
109  }
110 
111  /** Sets the magnification filter for this font */
112  void TextureMagFilter( unsigned char val )
113  {
114  _textureMagFilter = val;
115  }
116 
117  //----------------------------------------
118  // Setup and cleanup for rendering
119  //----------------------------------------
120 
121  /**
122  * Set the font to use.
123  * The font pointer must be set before calling
124  * any rendering methods
125  */
126  void SetFont( const GlsFontBase* font )
127  {
128  _font = font;
129  }
130  const GlsFontBase* GetFont( void )
131  {
132  return _font;
133  }
134 
135  /**
136  * Initializes the font to begin rendering characters. This will set up
137  * Open GL texture modes, bind the font's texture, set up minification
138  * and magnification filters, etc. This must be called once before
139  * invoking Render to draw characters. This version overwrites the
140  * texture minification and magnification filters before initializing.
141  * \param textureMinFilter Minification mode for the font texture
142  * \param textureMagFilter Magnification mode for the font texture
143  */
145  unsigned char textureMinFilter,
146  unsigned char textureMagFilter
147 #ifdef GLES
148  ,
149  IGlsStateManager* stateManager
150 #endif // GLES
151  )
152  {
153  _textureMinFilter = textureMinFilter;
154  _textureMagFilter = textureMagFilter;
156 #ifdef GLES
157  stateManager
158 #endif // GLES
159  );
160  }
161 
162  /**
163  * Initializes the font to begin rendering characters. This will set up
164  * Open GL texture modes, bind the font's texture, set up minification
165  * and magnification filters, etc. This must be called before
166  * using any of the Render methods draw characters.
167  */
168 
169 #ifdef GLES
170 
171  void InitRendering( IGlsStateManager* stateManager )
172  {
173  SetupTexture( _font->Texture(), stateManager );
174  }
175 
176 #else // !GLES
177 
179  {
180  SetupTexture( _font->Texture() );
181  }
182 
183  /**
184  * Restores the Open GL state as it was before the call to InitRendering.
185  * This should be called after all characters have been rendered using
186  * the Render methods.
187  */
189  {
190  glDisable( GL_TEXTURE_2D );
191  glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
192  } // end GlsFontRenderer::TermRendering
193 
194 #endif // GLES
195 
196  //----------------------------------------
197  // Rendering Methods
198  //----------------------------------------
199 
200 #ifdef GLES
201 
202  /** Draw a character by adding it into the supplied QuadStorage object
203  * \param emphasize Whether to draw with emphasize or not
204  * \param emphasisOffset If drawing with emphasize, the offset in logical units
205  * \param inverse Whether to draw in inverse mode or not
206  * \param quadStorage The quad storage object to render the characters into
207  * \param x1 lower left corner x coordinate of the polygon
208  * \param y1 lower left corner y coordinate of the polygon
209  * \param x2 upper right corner x coordinate of the polygon
210  * \param y2 upper right corner y coordinate of the polygon
211  */
212  void DrawCharacter(
213  const bool emphasize,
214  const float emphasisOffset,
215  const bool inverse,
216  GlsQuadListVCT_2D& quadStorage,
217  const GLfloat x1,
218  const GLfloat y1,
219  const GLfloat x2,
220  const GLfloat y2 ) const
221  {
222  // character color
223  quadStorage.AddQuad2D( x1, y1, x2, y2 );
224 
225  // Character emphasis. Draw two more cells offset a little so
226  // character appears bolded.
227  if( emphasize && !inverse )
228  {
229  GLfloat offsetY1( y1 + emphasisOffset );
230  GLfloat offsetY2( y2 + emphasisOffset );
231 
232  quadStorage.AddQuad2D( x1 - emphasisOffset, offsetY1, x2 - emphasisOffset, offsetY2 );
233  quadStorage.AddQuad2D( x1 + emphasisOffset, offsetY1, x2 + emphasisOffset, offsetY2 );
234  }
235 
236  } // end GlsFontRenderer::DrawCharacter
237 
238  /**
239  * Draws a halo effect for the given character.
240  *
241  * \param c the character code to render
242  * \param haloOffset Controls the size of the halo
243  * GlsTextGrid uses: (emphasize ? 0.05f : 0.03f) * (character_width) (x2 - x1)
244  * \param _vertArray Pointer to the currently bound vertex array
245  * \param x1 lower left corner x coordinate of the polygon
246  * \param y1 lower left corner y coordinate of the polygon
247  * \param x2 upper right corner x coordinate of the polygon
248  * \param y2 upper right corner y coordinate of the polygon
249  */
250  void DrawHalo(
251  const float haloOffset,
252  GlsQuadListVCT_2D& quadStorage,
253  const GLfloat x1,
254  const GLfloat y1,
255  const GLfloat x2,
256  const GLfloat y2 ) const
257  {
258  const GLfloat x1right( x1 + haloOffset );
259  const GLfloat x1left( x1 - haloOffset );
260  const GLfloat x2right( x2 + haloOffset );
261  const GLfloat x2left( x2 - haloOffset );
262  const GLfloat y1up( y1 + haloOffset );
263  const GLfloat y1down( y1 - haloOffset );
264  const GLfloat y2up( y2 + haloOffset );
265  const GLfloat y2down( y2 - haloOffset );
266 
267  quadStorage.AddQuad2D( x1left, y1up, x2left, y2up );
268  quadStorage.AddQuad2D( x1left, y1down, x2left, y2down );
269  quadStorage.AddQuad2D( x1right, y1up, x2right, y2up );
270  quadStorage.AddQuad2D( x1right, y1down, x2right, y2down );
271  }
272 
273 #else // !GLES
274 
275  /**
276  * Draws a character.
277  *
278  * \param emphasize true if the rendered character should be emphasized.
279  * This will essentially bold the character. If a bold
280  * font is being used, the character will appear even
281  * more bolded.
282  * \param emphasisOffset Magnitude of the emhpasis offset. A good value to try is (0.2 * character_width).
283  * \param inverse true if the rendered character should be inverse
284  * video. This makes the text see-through and it's
285  * background the text foreground color.
286  * \param x1 lower left corner x coordinate of the polygon
287  * \param y1 lower left corner y coordinate of the polygon
288  * \param x2 upper right corner x coordinate of the polygon
289  * \param y2 upper right corner y coordinate of the polygon
290  * \param tx1 lower left corner x texture coordinate
291  * \param ty1 lower left corner y texture coordinate
292  * \param tx2 upper right corner x texture coordinate
293  * \param ty2 upper right corner y texture coordinate
294  */
296  const bool emphasize,
297  const float emphasisOffset,
298  const bool inverse,
299  const GLfloat x1,
300  const GLfloat y1,
301  const GLfloat x2,
302  const GLfloat y2,
303  const GLfloat tx1,
304  const GLfloat ty1,
305  const GLfloat tx2,
306  const GLfloat ty2 ) const
307  {
308  // character color
309  glBlendFunc( inverse ? GL_ONE_MINUS_SRC_ALPHA : GL_SRC_ALPHA,
310  inverse ? GL_SRC_ALPHA : GL_ONE_MINUS_SRC_ALPHA );
311 
312  glBegin( GL_QUADS );
313 
314  MapTexture( x1, y1, x2, y2, tx1, ty1, tx2, ty2 );
315  // Character emphasis. Draw two more cells offset a little so
316  // character appears bolded.
317  if( emphasize && !inverse )
318  {
319  GLfloat offsetY1( y1 + emphasisOffset );
320  GLfloat offsetY2( y2 + emphasisOffset );
321 
322  MapTexture(
323  x1 - emphasisOffset, offsetY1, x2 - emphasisOffset, offsetY2,
324  tx1, ty1, tx2, ty2 );
325 
326  MapTexture(
327  x1 + emphasisOffset, offsetY1, x2 + emphasisOffset, offsetY2,
328  tx1, ty1, tx2, ty2 );
329  }
330 
331  glEnd();
332  } // end GlsFontRenderer::DrawCharacter
333 
334  /**
335  * Draws a halo effect for the given character.
336  *
337  * \param haloOffset Controls the size of the halo
338  * GlsTextGrid uses: (emphasize ? 0.05f : 0.03f) * (character_width) (x2 - x1)
339  * \param x1 lower left corner x coordinate of the polygon
340  * \param y1 lower left corner y coordinate of the polygon
341  * \param x2 upper right corner x coordinate of the polygon
342  * \param y2 upper right corner y coordinate of the polygon
343  * \param tx1 lower left corner x texture coordinate
344  * \param ty1 lower left corner y texture coordinate
345  * \param tx2 upper right corner x texture coordinate
346  * \param ty2 upper right corner y texture coordinate
347  */
348  void DrawHalo(
349  const float haloOffset,
350  const GLfloat x1,
351  const GLfloat y1,
352  const GLfloat x2,
353  const GLfloat y2,
354  const GLfloat tx1,
355  const GLfloat ty1,
356  const GLfloat tx2,
357  const GLfloat ty2 ) const
358  {
359  // Halo effect.
360  GLfloat x1right( x1 + haloOffset );
361  GLfloat x1left( x1 - haloOffset );
362  GLfloat x2right( x2 + haloOffset );
363  GLfloat x2left( x2 - haloOffset );
364  GLfloat y1up( y1 + haloOffset );
365  GLfloat y1down( y1 - haloOffset );
366  GLfloat y2up( y2 + haloOffset );
367  GLfloat y2down( y2 - haloOffset );
368 
369  glBegin( GL_QUADS );
370 
371  // Shift left and up
372  MapTexture(
373  x1left, y1up, x2left, y2up,
374  tx1, ty1, tx2, ty2 );
375 
376  // Shift left and down
377  MapTexture(
378  x1left, y1down, x2left, y2down,
379  tx1, ty1, tx2, ty2 );
380 
381  // Shift right and up
382  MapTexture(
383  x1right, y1up, x2right, y2up,
384  tx1, ty1, tx2, ty2 );
385 
386  // Shift right and down
387  MapTexture(
388  x1right, y1down, x2right, y2down,
389  tx1, ty1, tx2, ty2 );
390 
391  glEnd();
392  } // end GlsFontRenderer::DrawHalo
393 
394  /**
395  * Draws a drop shadow effect for a character.
396  * \param shadowOffset distance to offset the shadow from the character
397  * \param x1 lower left corner x coordinate of the polygon
398  * \param y1 lower left corner y coordinate of the polygon
399  * \param x2 upper right corner x coordinate of the polygon
400  * \param y2 upper right corner y coordinate of the polygon
401  * \param tx1 lower left corner x texture coordinate
402  * \param ty1 lower left corner y texture coordinate
403  * \param tx2 upper right corner x texture coordinate
404  * \param ty2 upper right corner y texture coordinate
405  */
407  const float shadowOffset,
408  const GLfloat x1,
409  const GLfloat y1,
410  const GLfloat x2,
411  const GLfloat y2,
412  const GLfloat tx1,
413  const GLfloat ty1,
414  const GLfloat tx2,
415  const GLfloat ty2 ) const
416  {
417  // Shadow effect.
418  glBegin( GL_QUADS );
419 
420  // Shift right and down
421  MapTexture(
422  x1 + shadowOffset,
423  y1 - shadowOffset,
424  x2 + shadowOffset,
425  y2 - shadowOffset,
426  tx1, ty1, tx2, ty2 );
427 
428  glEnd();
429 
430  } // end GlsFontRenderer::DrawShadow
431 
432  /**
433  * Map a square piece of a texture onto a quad ( assumed to be called
434 between glBegin(GL_QUADS)...glEnd() pair )
435  * \param x1 the lower left corner x of the quad
436  * \param y1 the lower left corner y of the quad
437  * \param x2 the upper right corner x of the quad
438  * \param y2 the upper right corner of the quad
439  * \param tx1 lower left corner x texture coordinate
440  * \param ty1 lower left corner y texture coordinate
441  * \param tx2 upper right corner x texture coordinate
442  * \param ty2 upper right corner y texture coordinate
443  */
444  static void MapTexture(
445  const GLfloat x1,
446  const GLfloat y1,
447  const GLfloat x2,
448  const GLfloat y2,
449  const GLfloat tx1,
450  const GLfloat ty1,
451  const GLfloat tx2,
452  const GLfloat ty2 )
453  {
454  glTexCoord2f( tx1, ty1 );
455  glVertex2f( x1, y1 );
456  glTexCoord2f( tx2, ty1 );
457  glVertex2f( x2, y1 );
458  glTexCoord2f( tx2, ty2 );
459  glVertex2f( x2, y2 );
460  glTexCoord2f( tx1, ty2 );
461  glVertex2f( x1, y2 );
462  }
463 
464 #endif // GLES
465 
466  /**
467  * Create a GlsFontRenderer with the default settings.
468  * \param font The font to use for rendering. This may be NULL on creation, but it must be set before rendering.
469  */
471  : _font( font )
474  {
475  }
476 
477 protected:
478 #ifndef GLES
479  /** Current drawing color is kept so we don't have to make an OpenGL call if the color is the same */
481 #endif
482 
483  /** Pointer to the font to use for rendering */
485 
486  /** Minification mode for the font texture */
487  unsigned char _textureMinFilter;
488 
489  /** Magnification mode for the font texture */
490  unsigned char _textureMagFilter;
491 
492  /**
493  * Helper method to set up Open GL texture modes, bind the font's texture,
494  * set up minification and magnification filters, etc.
495  */
496 
497 #ifdef GLES
498 
499  void SetupTexture( IFontImage* texture, IGlsStateManager* stateManager )
500  {
502  if( mipMap )
503  {
504  // This will force the image to create the mipmap images
505  texture->MipMap( true );
506  }
507 
508  // Initialize the font texture
509  stateManager->Texture2DEnabled( true );
510  stateManager->BindTexture( texture );
511 
512  // Set up mip mapping for magnification
513  if( _textureMagFilter == TEXTURE_FILTER_NEAREST )
514  {
515  stateManager->SetTextureMagFilter( GL_NEAREST );
516  }
517  else if( _textureMagFilter == TEXTURE_FILTER_LINEAR )
518  {
519  stateManager->SetTextureMagFilter( GL_LINEAR );
520  }
521 
522  // Set up mip mapping for minification
523  switch( _textureMinFilter )
524  {
526  stateManager->SetTextureMinFilter( GL_NEAREST );
527  break;
528 
530  stateManager->SetTextureMinFilter( GL_LINEAR );
531  break;
532 
534  stateManager->SetTextureMinFilter( GL_NEAREST_MIPMAP_NEAREST );
535  break;
536 
538  stateManager->SetTextureMinFilter( GL_LINEAR_MIPMAP_LINEAR );
539  break;
540 
542  stateManager->SetTextureMinFilter( GL_NEAREST_MIPMAP_LINEAR );
543  break;
544 
546  stateManager->SetTextureMinFilter( GL_LINEAR_MIPMAP_NEAREST );
547  break;
548  }
549 
550  stateManager->SetTextureEnvMode( IGlsStateManager::GLS_TEXTURE_MAP_MODE_MODULATE );
551 
552  } // end GlsFontRenderer::SetupTexture
553 
554 #else // !GLES
555 
556  void SetupTexture( IFontImage* texture )
557  {
559  if( mipMap )
560  {
561  // This will force the image to create the mipmap images
562  texture->MipMap( true );
563  }
564 
565  // Initialize the drawing color
566  glColor4ubv( _currentColor.RGBA() );
567 
568  // Initialize the font texture
569  glEnable( GL_TEXTURE_2D );
570  texture->BindTexture();
571 
572  // Set up mip mapping for magnification
573  if( _textureMagFilter == TEXTURE_FILTER_NEAREST )
574  {
575  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
576  }
577  else if( _textureMagFilter == TEXTURE_FILTER_LINEAR )
578  {
579  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
580  }
581 
582  // Set up mip mapping for minification
583  switch( _textureMinFilter )
584  {
586  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
587  break;
589  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
590  break;
592  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST );
593  break;
595  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
596  break;
598  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR );
599  break;
601  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST );
602  break;
603  }
604 
605  glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
606 
607  } // end GlsFontRenderer::SetupTexture
608 
609 #endif // GLES
610 
611 }; // end class GlsFontRenderer
612 
613 } // end namespace disti
614 
615 #endif
Definition: display_types.h:75
Definition: display_types.h:73
virtual void MipMap(bool mipMap)=0
unsigned char _textureMinFilter
Definition: gls_font_renderer.h:487
Definition: IFontImage.h:53
void SetupTexture(IFontImage *texture)
Definition: gls_font_renderer.h:556
void TextureMinFilter(unsigned char val)
Definition: gls_font_renderer.h:100
The disti::GlsFontBase class and related classes.
The disti::GlsQuadListVC_3D and GlsQuadListVCT_2D classes.
GlsColor _currentColor
Definition: gls_font_renderer.h:480
Image * Texture() const
Definition: gls_font_base.h:317
virtual void BindTexture()=0
unsigned char TextureMagFilter()
Definition: gls_font_renderer.h:106
Definition: gls_state_manager_interface.h:66
Definition: gls_quad_storage.h:156
unsigned char TextureMinFilter()
Definition: gls_font_renderer.h:94
The disti::GlsStateManager factory class. Creates an instance of a state manager that manages the GL ...
The Color class: Implements a 4 component RGBA color.
The Image class. All textures are converted internally into Images.
const GlsFontBase * _font
Definition: gls_font_renderer.h:484
VertexNoColor Vector
Definition: gls_font_base.h:66
Definition: gls_font_renderer.h:83
void DrawCharacter(const bool emphasize, const float emphasisOffset, const bool inverse, const GLfloat x1, const GLfloat y1, const GLfloat x2, const GLfloat y2, const GLfloat tx1, const GLfloat ty1, const GLfloat tx2, const GLfloat ty2) const
Definition: gls_font_renderer.h:295
The disti::Vertex class. A class for manipulating 3D vertices.
void DrawShadow(const float shadowOffset, const GLfloat x1, const GLfloat y1, const GLfloat x2, const GLfloat y2, const GLfloat tx1, const GLfloat ty1, const GLfloat tx2, const GLfloat ty2) const
Definition: gls_font_renderer.h:406
void SetFont(const GlsFontBase *font)
Definition: gls_font_renderer.h:126
void DrawHalo(const float haloOffset, const GLfloat x1, const GLfloat y1, const GLfloat x2, const GLfloat y2, const GLfloat tx1, const GLfloat ty1, const GLfloat tx2, const GLfloat ty2) const
Definition: gls_font_renderer.h:348
Definition: gls_color.h:53
unsigned char _textureMagFilter
Definition: gls_font_renderer.h:490
void InitRendering()
Definition: gls_font_renderer.h:178
void TermRendering()
Definition: gls_font_renderer.h:188
Definition: display_types.h:71
void TextureMagFilter(unsigned char val)
Definition: gls_font_renderer.h:112
Definition: display_types.h:74
Definition: display_types.h:70
Definition: display_types.h:72
void AddQuad2D(const float x1, const float y1, const float x2, const float y2)
Character attributes. One item for each character in the set.
Definition: gls_font_base.h:124
static void MapTexture(const GLfloat x1, const GLfloat y1, const GLfloat x2, const GLfloat y2, const GLfloat tx1, const GLfloat ty1, const GLfloat tx2, const GLfloat ty2)
Definition: gls_font_renderer.h:444
void InitRendering(unsigned char textureMinFilter, unsigned char textureMagFilter)
Definition: gls_font_renderer.h:144
Definition: bmpimage.h:46
GlsFontRenderer(const GlsFontBase *font)
Definition: gls_font_renderer.h:470
void RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a=255)
Definition: gls_color.h:168
IFontImage.
Definition: gls_font_base.h:85
The gls_gl.