使用glutBitmapCharacter绘制更大的文本

时间:2012-09-01 16:09:08

标签: opengl text drawing glut

我设法使用glutBitmapCharacters在opengl中绘制文本。现在我想画一个标题,但它必须有更大的尺寸。我怎么做? 这是我的drawtext函数的代码:

   void drawText(const char *text,int length , int x , int y)
 {
   glMatrixMode(GL_PROJECTION);
   double *matrix = new double[16];
   glGetDoublev(GL_PROJECTION_MATRIX,matrix);
   glLoadIdentity();
   glOrtho(0,800,0,600,-5,5);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   glPushMatrix();
   glLoadIdentity();
   glRasterPos2i(x,y);
   for ( int i = 0 ; i < length ; i++)
       glutBitmapCharacter(GLUT_BITMAP_9_BY_15,(int)text[i]);
   delete matrix;
 }

2 个答案:

答案 0 :(得分:2)

glutBitmapCharacter使用了glBitmap。所以你不能改变文字大小;它将是文本的确切像素大小。

如果您想要更改大小的文本,则需要使用“笔画”字符功能(例如glutStrokeCharacter)。这些绘制实际三角形等等,可以通过矩阵比例运算调整大小(glScale)。

答案 1 :(得分:1)

作为@NicolBolas答案的补充,你可以始终缩放原始位图数据(就像成像程序,例如Photoshop,可以),虽然结果,特别是关于字体,可能并不总是令人满意。然而,通过自然数进行缩放将始终是像素完美的。

要使用此类缩放,您需要将字体渲染为纹理。然后,您可以将它们渲染为纹理四边形以进行屏幕显示,并使用内置的OpenGL缩放。

请注意,我推荐此方法。如果您需要更复杂的功能,可能会使用更大,功能更强大的库(如freetype-gl)。