如何在C ++中使用glutBitmapString()将文本绘制到屏幕上?

时间:2009-02-12 23:45:01

标签: c++ graphics glut

我正试图在2d中使用GLUT在屏幕上绘制文字。

我想使用glutBitmapString(),有人可以向我展示一个简单的例子,说明在C ++中设置和正确使用这个方法你需要做什么,这样我就可以在(X,Y)位置绘制一个任意字符串吗? / p>

glutBitmapString(void *font, const unsigned char *string); 

我正在使用linux,我知道我需要创建一个Font对象,虽然我不确定如何,我可以提供它作为第二个争论的字符串。但是,我如何指定x / y位置?

这方面的一个简单例子对我有很大帮助。如果你能告诉我创建字体,那就调用最好的方法。

2 个答案:

答案 0 :(得分:11)

在调用glutBitmapString()之前,您必须使用glRasterPos设置栅格位置。请注意,每次调用glutBitmapString()都会提升光栅位置,因此几个连续的调用将一个接一个地打印出字符串。您还可以使用glColor()设置文本颜色。列出了可用字体集here

// Draw blue text at screen coordinates (100, 120), where (0, 0) is the top-left of the
// screen in an 18-point Helvetica font
glRasterPos2i(100, 120);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render");

答案 1 :(得分:0)

添加到Adam的答案,

glColor4f(0.0f, 0.0f, 1.0f, 1.0f);  //RGBA values of text color
glRasterPos2i(100, 120);            //Top left corner of text
const unsigned char* t = reinterpret_cast<const unsigned char *>("text to render");
// Since 2nd argument of glutBitmapString must be const unsigned char*
glutBitmapString(GLUT_BITMAP_HELVETICA_18,t);

查看https://www.opengl.org/resources/libraries/glut/spec3/node76.html了解更多字体选项