1

我设法使用 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;
 }
4

2 回答 2

2

glutBitmapCharacterglBitmap在引擎盖下使用。所以你不能改变文字大小;它将是文本的确切像素大小。

如果你想改变文字的大小,你需要使用“Stroke”字符功能(如glutStrokeCharacter)。这些绘制实际的三角形等,可以通过矩阵缩放操作(glScale)调整谁的大小。

于 2013-02-25T07:22:41.643 回答
1

作为@NicolBolas 答案的补充,您始终可以缩放原始位图数据(就像成像程序,例如 Photoshop 一样),尽管结果(尤其是关于字体)可能并不总是令人满意。不过,按自然数缩放将始终是像素完美的。

要使用这种缩放,您需要将字体渲染为纹理。然后,您可以将它们作为纹理四边形渲染到屏幕上,并使用内置的 OpenGL 缩放。

请注意,我推荐这种方法。如果您需要更复杂的功能,也许更大、功能更强大的库(如freetype-gl)将是合适的。

于 2013-02-25T07:31:00.350 回答