【问题标题】:What is the easiest way to print text to screen in OpenGL?在 OpenGL 中将文本打印到屏幕的最简单方法是什么?
【发布时间】:2010-02-02 10:22:19
【问题描述】:

我需要将 3 行文本作为菜单打印到窗口。

1 - Menu
2 - Pause
3 - Exit

【问题讨论】:

标签: opengl printing


【解决方案1】:

考虑到您在之前的问题中使用了 GLUT,最简单的方法是使用 GLUT 的内置字体渲染功能。

例子:

void output(int x, int y, float r, float g, float b, int font, char *string)
{
  glColor3f( r, g, b );
  glRasterPos2f(x, y);
  int len, i;
  len = (int)strlen(string);
  for (i = 0; i < len; i++) {
    glutBitmapCharacter(font, string[i]);
  }
}

其中字体是 GLUT 字体常量之一:

GLUT_BITMAP_8_BY_13
GLUT_BITMAP_9_BY_15
GLUT_BITMAP_TIMES_ROMAN_10
GLUT_BITMAP_TIMES_ROMAN_24
GLUT_BITMAP_HELVETICA_10
GLUT_BITMAP_HELVETICA_12
GLUT_BITMAP_HELVETICA_18

【讨论】:

  • 我们可以在不使用 GLUT 的情况下渲染文本吗?有哪些可能的方法?
【解决方案2】:

因为我发现了一个非常棒的工具来渲染高质量的 2D 文本,所以发布了这篇文章:

freetype-gl library

查看示例渲染:

【讨论】:

    【解决方案3】:

    This webpage 概述了三种可能的方法,并链接到有用的库。

    没有简单的内置方法来呈现文本,并且有(如该页面所述)几种可能的方法,这完全取决于您需要从文本呈现中获得哪些属性。

    【讨论】:

      【解决方案4】:

      此处描述了一种仅限 Windows 但简单的方法:Nehe Lesson 13

      基本上,它使用这三个功能:

      • wglUseFontBitmaps
      • glListBase
      • glCallLists

      【讨论】:

        【解决方案5】:

        这是在屏幕上书写文字的简单方法:

        glColor3f (1.0, 0.0, 0.0);
                glRasterPos2f(-240, 120); //define position on the screen
                char *string = "Text";
              
              while(*string){
                glutBitmapCharacter(GLUT_BITMAP_8_BY_13, *string++);
              }
        

        【讨论】:

          猜你喜欢
          • 2012-03-06
          • 1970-01-01
          • 2021-11-11
          相关资源
          最近更新 更多