我设法使用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;
}
答案 0 :(得分:2)
glutBitmapCharacter
使用了glBitmap
。所以你不能改变文字大小;它将是文本的确切像素大小。
如果您想要更改大小的文本,则需要使用“笔画”字符功能(例如glutStrokeCharacter
)。这些绘制实际三角形等等,可以通过矩阵比例运算调整大小(glScale
)。
答案 1 :(得分:1)
作为@NicolBolas答案的补充,你可以始终缩放原始位图数据(就像成像程序,例如Photoshop,可以),虽然结果,特别是关于字体,可能并不总是令人满意。然而,通过自然数进行缩放将始终是像素完美的。
要使用此类缩放,您需要将字体渲染为纹理。然后,您可以将它们渲染为纹理四边形以进行屏幕显示,并使用内置的OpenGL缩放。
请注意,我不推荐此方法。如果您需要更复杂的功能,可能会使用更大,功能更强大的库(如freetype-gl
)。