計算機圖形學(二)輸出圖元_16_字符函數
來源:程序員人生 發布時間:2016-06-07 08:34:27 閱讀次數:3501次
OpenGL 字符函數
OpenGL基本庫僅為顯示單個字符和文字串提供了基本的支持。我們可以定義圖3.61中的位圖字符,并將1個位圖集作為字庫存儲。1個文字串通過將從字庫當選擇的位圖序列映照到幀緩存的
相鄰位置來顯示。

但是,OpenGL實用函數工具包(GLUT)中有1些預定義的字庫。因此我們不用創建自己的位圖字型庫,除非需要顯示GLUT中沒有的字體。GLUT子程序可顯示位圖和輪廓字體。GLUT位圖字體由OpenGL的glBitmap函數來繪制,而輪廓字體由折線邊界(GL_LINE_STRIP)生成。
使用下面的函數可顯示GLUT位圖字符:
glutBitmapCharacter (font, character);
這里參數font用GLUT符號常量賦值,用來指定1特定字型集,參數character賦以ASCII編碼或其他要顯示的字符。這樣,要顯示大寫的"A",可使用ASCII編碼65或指定為‘A’。一樣,編碼66與‘B’等效,編碼97與小寫字符‘a’等效,編碼98與‘b’等效,順次類推。固定寬度或比例間隔字體都可使用。可用GLUT_BITMAP_8_Y_13或GLUT_BITMAP_9_BY_15來選擇1種固定寬度字體并肯定其參數。也可GLUT_BITMAP_TIMES_ROMAN_10或GLUT_BITMAP_HELVETICA_10來選擇10磅的比例間隔字體。12磅的Times-Roman字體和12磅及18磅的Helvetica字體都可以選擇。
利用glutBitmapCharacter顯示的字符以當前光柵位置作為其位圖原點(左下角)。在字符位圖裝入刷新緩存后,當前光柵位置的x坐標取得1個字符寬度的增量。例如,我們可使用以下程序顯示1個包括36個位圖字符的文字串。
glRasterPosition2i (x, y);
for (k = 0; k < 36; k++)
glutBitmapCharacter (GLUT_BITMAP_9_BY_15, text [k]);
該字符串用履行glutBitmapCharacter函數前指定的色彩來顯示。使用下面的函數可以顯示1個輪廓字符。
glutStrokeCharacter (font, character);
在這個函數中,我們可為參數font賦值GLUT_STROKE_ROMAN來顯示比例空間的字體,或賦值GLUT_STROKE_MONO_ROMAN來顯示常量間隔的字體。字符的大小和位置通過在履行glutStrokeCharacter子程序前指定變換操作來控制。每一個字符顯示后,自動實行坐標位移,從而使下1字符在當前字符的右側顯示。輪廓字符生成的文字串是2維或3維場景的1部份,由于它們用線段構成。這樣,它們可從各種方向來視察,并在對它們進行縮放時不會變形,還可以通過其他方式對它們進行變換。但與位圖字符相比,繪制速度比較慢。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈