FontGL.cpp
上传用户:apollo_111
上传日期:2022-08-09
资源大小:2146k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // FontGL.cpp: implementation of the CFontGL class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "Tetris.h"
  6. #include "FontGL.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. //////////////////////////////////////////////////////////////////////
  13. // Construction/Destruction
  14. //////////////////////////////////////////////////////////////////////
  15. CFontGL::CFontGL()
  16. {
  17. }
  18. CFontGL::~CFontGL()
  19. {
  20. }
  21. void CFontGL::BuildFont(struct HDC__ *hhdc)
  22. {
  23. HFONT font;
  24. //  生成显示列表的索引
  25. m_iBaseFont = glGenLists(96);
  26. //  定义字体
  27. font = CreateFont( 25,
  28. 0,
  29. 0,
  30. 0,
  31. FW_BOLD,
  32. FALSE,
  33. FALSE,
  34. FALSE,
  35. ANSI_CHARSET,
  36. OUT_TT_PRECIS,
  37. CLIP_DEFAULT_PRECIS,
  38. ANTIALIASED_QUALITY,
  39. FF_DONTCARE|DEFAULT_PITCH,
  40. "ARIAL");
  41. SelectObject(hhdc, font);
  42. //  生成显示列表
  43. wglUseFontBitmaps(hhdc, 32, 96, m_iBaseFont);
  44. }
  45. void CFontGL::glPrint(const char *fmt, ...)
  46. {
  47. char text[256];
  48. va_list ap;
  49. if (fmt == NULL)
  50. return;
  51. va_start(ap, fmt);
  52. vsprintf(text, fmt, ap);
  53. va_end(ap);
  54. glPushAttrib(GL_LIST_BIT);
  55. glListBase(m_iBaseFont - 32);
  56. glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);
  57. glPopAttrib();
  58. }
  59. void CFontGL::KillFont(void)
  60. {
  61. glDeleteLists(m_iBaseFont, 96);
  62. }