在OpenGL中将文本打印到屏幕的最简单方法是什么?

时间:2010-02-02 10:22:20

标签: opengl printing

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

1 - Menu
2 - Pause
3 - Exit

5 个答案:

答案 0 :(得分:13)

考虑到您在之前的问题中使用了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]);
  }
}

其中font是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

答案 1 :(得分:2)

This webpage概述了三种可能的方式,以及指向有用的方便库的链接。

没有简单的内置方式来呈现文本,并且(在该页面上详细说明)可能的方法,这取决于您在文本呈现中需要哪些属性,这是一种权衡。

答案 2 :(得分:1)

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

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

  • wglUseFontBitmaps
  • glListBase
  • glCallLists

答案 3 :(得分:1)

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

freetype-gl library

参见样本呈现:

freetype-gl sample image

答案 4 :(得分:0)

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

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++);
      }