2012-09-01 22 views
1

我設法使用glutBitmapCharacters在opengl中繪製文本。現在我想畫一個標題,但它必須有一個更大的尺寸。我怎麼做? 這裏是我的DrawText函數代碼:使用glutBitmapCharacters繪製更大的文本

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

glutBitmapCharacter使用glBitmap引擎蓋下。所以你不能更改文字大小;它將是文本的確切像素大小。

如果您想要文字的大小可以更改,您需要使用「筆畫」字符功能(如glutStrokeCharacter)。這些繪製實際的三角形等,誰的大小可以通過矩陣比例操作(glScale)進行調整。

1

作爲除了@NicolBolas回答,您可以隨時規模原始位圖數據(就像圖像程序,例如Photoshop中,可以),儘管這個結果,特別是關於字體,可能並不總是令人滿意。儘管如此,通過自然數進行縮放將永遠是像素完美的。

要使用這種縮放,您需要將字體渲染爲紋理。然後,您可以將它們渲染爲紋理四邊形以進行屏幕顯示,並使用內置的OpenGL縮放。

請注意,我是而不是建議這種方法。如果您需要更復雜的功能,則可能需要更大,功能更多的庫(如freetype-gl)。