OpenGL中最简单的将文本输出到屏幕的方法是什么?

9
我需要将三行文本作为菜单打印到窗口中。
1 - Menu
2 - Pause
3 - Exit

在3D之上:https://dev59.com/2nbZa4cB1Zd3GeqPLe38 除OpenGL外没有任何库:https://dev59.com/wWox5IYBdhLWcg3w_JLd - Ciro Santilli OurBigBook.com
5个回答

15

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

我们能否在不使用GLUT的情况下渲染文本?有哪些可能的方法? - Gokul

4

我升级了这篇文章,因为我找到了一个非常好的工具来呈现高质量的2D文本:

freetype-gl库

看看样例渲染图:

freetype-gl示例图片


2

这个网页概述了三种可能的方法,并提供了有用的库链接。

没有简单的内置方法来渲染文本,如该页面所详细说明的那样,有几种可能的方法,这都取决于您需要从文本呈现中获得哪些属性,因此需要做出权衡。


1
这里介绍了一种仅适用于Windows的简单方法:Nehe Lesson 13
基本上,它使用了以下三个函数:
  • wglUseFontBitmaps
  • glListBase
  • glCallLists

1

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接