在 OpenGL 中将文本打印到屏幕的最简单方法是啥?
Posted
技术标签:
【中文标题】在 OpenGL 中将文本打印到屏幕的最简单方法是啥?【英文标题】: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
【问题讨论】:
在 3D 之上:***.com/questions/18847109/… 除了 OpenGL 之外没有任何库:***.com/questions/8847899/… 【参考方案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++);
【讨论】:
以上是关于在 OpenGL 中将文本打印到屏幕的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL - 在 3D 世界的屏幕上固定位置打印 2D 文本
在 laravel 5.4 中将变量从 Route 传递到 Controller 的最简单方法是啥?
无法在 GLEW 应用程序中将 OpenGL 缓冲区打印到控制台