opengl 使用gltext繪製漢字

2021-10-08 16:43:44 字數 1239 閱讀 6956

對於freetype如何解析字元,gltext如何包裝freetype並結合opengl進行字元和漢字繪製的具體技術細節,此處就不進行解釋,網上有很多相關的示例。此處只對編譯和使用過程中遇到的坑進行說明。

(1)在官網上下的freetype2100,個人編譯出來的庫有問題,具體是啥問題,不清楚。迫於無奈使用了osg第三方庫中的freetype庫。

(2)在使用gltext前一定要對freetype進行測試,保證freetype是正確的。官網上的示例說實話不怎麼的,在網上找了一位仁兄的測試示例,引用自

void testtruetype()

ft_select_charmap(m_pftface, ft_encoding_unicode);

ft_set_char_size(m_pftface, 0, 12 << 6, 300, 300);

// 此齣將"a"改為漢字,則只顯示出乙個框;

//error = ft_load_glyph(m_pftface, ft_get_char_index(m_pftface, 0x6b66), ft_load_default);

// 第二個引數為渲染模式,這裡渲染為1位位圖(黑白位圖),若為ft_render_mode_normal則渲染為256級灰度圖;

error = ft_load_char(m_pftface, 27494, ft_load_default);

error = ft_render_glyph(m_pftface->glyph, ft_render_mode_normal);

ft_bitmap& bmp = m_pftface->glyph->bitmap;

int h = bmp.rows;

int w = bmp.width;

for (int i = 0; i < h; i++)

else

}printf("\n");

}(3)關於測試**中提到的中文字元顯示的問題,使用wchar_t或者wstring就可以,因為漢字需要兩個位元組來顯示

(4)另外需要注意的問題是,載入的font字型一定要支援漢字,如arial.ttf是不支援漢字的,所以你無論怎麼弄顯示的都是乙個框。

(5)gltext是老外弄的,老外用的是英文,所以原生的gltext是不支援漢字的,需要更改介面,把char換成wchar_t,然後把裡面儲存字元個數的256換成常用的漢字的個數就ok了。

下面給出初步實驗的效果

OpenGL 使用Bresenham演算法繪製圓

bresenham演算法繪製直線就不贅述了,大家看一看演算法簡介就能很好理解與實踐。稍稍麻煩一點的就是用該演算法繪製圓了,演算法思想其實是一樣的,並沒有太大改變。演算法核心 組合以上式子,當dupper dlower 0時,取上點 當dupper dlower 0時,取下點 否則任意。實驗過程中,我...

python 使用 vtkPolyData 繪線

vtk 可以通過vtkpolydata 繪製曲線以及三角麵片,下面的 簡單的繪製乙個線。使用到如下 vtk的類 如下 import vtk import numpy as np class ployline vtk.vtkobject 繪製中心線 def init self 構造2d的線 self....

openGL 紋理使用

最近找了點資料學習了下opengl 紋理的使用 先有個 整體把握,然後再去看大部頭中的細節講解,感覺這樣的學習方式好些 總結下紋理使用總體流程 1 啟用紋理 glenable gl texture 2d 2 載入紋理 3 紋理 的顯示 載入紋理 1 讀取紋理影象高寬和畫素資料到記憶體中,老版本 op...