OpenGL總結14 字元與文字輸出

2021-10-06 12:27:55 字數 1916 閱讀 8571

字元圖元基礎(根據計算機圖形學進行簡單的總結):

字樣:一組字元的完整設計風格

字型:一組按照特定尺寸和格式的目標字元樣式

字型的表示有兩種方式(opengl本身不提供字元支援,通過呼叫window的介面實現):

位圖字型:與光柵化類似(也叫光柵化字型),在網格上用乙個乙個畫素塊拼出乙個字元形狀,位圖字型比較簡單,顯示時方便,但是位圖字型對於縮放等操作並不具備很好的支援,因為要調整畫素的位置,同時因為字型儲存在高速記憶體中,所以很佔地方,尤其是字型需要更多畫素點的時候,並且顯示效果也不是特別的好(鋸齒嚴重,opengl中一般用位圖字型顯示不需要縮放和旋轉的內容)。

輪廓字型:利用點和曲線形成字型(跟寫字差不多,定好點,然後連線),輪廓字型對於縮放等操作有較好的支援(因為只要控制點和線的位置就可以實現,不易不會產生變形,類似向量圖),顯示效果較好同時不需要過多的記憶體,但是需要存入幀快取中(需要計算比較耗時,時間換空間)。

因為opengl本身不提供文字的繪製,所以需要呼叫window的介面,但是有些字元我們可以自己生成,然後儲存在字型檔中進行呼叫。(不存在需要的字元的時候)

將繪製物件的一系列語句儲存成乙個具有名字的列表,這樣每次繪製可以直接呼叫這個名字就可以進行繪製,這樣可以避免每次都要進行命令的傳遞,可以節省時間,呼叫也變的簡單,還可以重複利用。

建立列表

glnewlist

(id,mode)

;glendlist()

;

這兩個語句之間的所有語句將會形成列表,也就是可以當作乙個統一的物件進行呼叫。

引數:id:列表名

mode:執行模式,gl_compile和gl_compile_and_execute,日後執行則選擇第乙個,如果現在就需要執行,選第二個,兩種模式都會將這個物件進行儲存,直到釋放為止。

顯示列表中語句的引數值是固定的不能被更改,所以不能包含頂點指標等內容。列表的id同樣適用opengl為我們準備的分配函式避免錯誤。

glgenlists

(num);

通過上面的語句可以分配指定數量的id,id是唯一識別符號。但是如果語句無法正常分配id的時候,就會返回0,一般在opengl中0的id代表著不是用這個物件。

如果對這個id不是很放心,需要檢視它是否被使用過,那麼可以用

glislist

(id)

;//檢視是否已經是列表

執行列表也有專門的函式

glcalllist

(id)

;//簡單用法

glistbase

(offset)

;//基礎值,第乙個位置值,之後的所有列表的標識都是通過列表id與這個值相加得到的

glcalllists

(num,datatype,listidarray)

;

引數:

num:需要呼叫的列表的數量

datatype:列表中的資料型別

listidarray:存放id的陣列,通過陣列的id與基礎值相加計算得到呼叫的標識

我們輸出文字時,採用ascii碼的值作為列表的標識。

之前有寫過輪廓字型的輸出,位圖字型的輸出稍微不同。

wglusefontbitmaps

(m_hdc, base,

256, m_base)

;//從base開始建立256個位圖的列表

輪廓字型呼叫的是wglusefontoutlines,同時輸出文字的位置要使用

glrasterpos2f

(x,y)

;

這個語句與glvertex類似,只不過是給字元顯示設定起始位置的。

python學習 14 字串

2 查詢和替換 7個方法 3 大小寫轉換 5個方法 4 文字對齊 3個方法 5 去除空白字元 3 6 拆分和連線 5 字串的切片 可以使用索引獲取乙個字串中指定位置的字元,索引計數從0開始 也可以使用for迴圈遍歷字串中每乙個字元 大多數程式語言都是用 來定義字串 string hello pyth...

1 4 字串 字典操作

1.4.2 字串常見的操作 1.4.3 字典的建立及索引 1.4.4 字典的常用操作 刪除1.4.5 字典推導式 batch 單引號 string my name 雙引號 string my name 三引號,可以跨行 string my name 結果 my name my name myname...

XML (6)字元解析與文字解析

簡介 pcdata是xml中預設的字元資料,會被解析器解析,而通過cdata包裝的字元屬於文字資料,不會被解析器解析。在xml中,所有的字元都會預設的被解析器解析,所以在同一行中的乙個標籤對,無論裡邊是文字 23 還是巢狀有標籤對 小朱 23 都會被解析器解析,標籤對按照標籤對的格式來解析,實體引用...