OSG中LabelControl中文顯示

2021-09-29 00:14:15 字數 1292 閱讀 9245

osg預設是不支援中文顯示的,然而在有些時候還是需要中文顯示的,對於osg的中文顯示,網上有很多的解決方案,但是我沒有找到關於labelcontrol的顯示,這裡我把關於labelcontrol的中文顯示分享一下。

osg的中文顯示大致來說可以分為3步,我這裡的前2步就是參考網上的解決方案,沒有什麼特別的。

1.定義轉換函式。

void

unicodetoutf8

(const std::wstring &src, std::string& result)

void

gb2312tounicode

(const std::string& src, std::wstring& result)

void

gb2312toutf8

(const std::string& src, std::string& result)

2.轉換需要轉換的字元。

std::string _chineseexample;

_chineseexample = "中文示例";

std::string _writechineseexample;

gb2312toutf8(_chineseexample,_writechineseexample);

3.寫入想要顯示的地方,我這邊是labelcontrol

經過測試發現問題,需要設定編碼和文字格式

std::string _chineseexample;

_chineseexample = "中文示例";

std::string _writechineseexample;

gb2312toutf8(_chineseexample,_writechineseexample);

labelcontrol* label = new labelcontrol(_writechineseexample + "osgearth controls toolkit");

label->setfontsize(24.0f);

label->sethorizalign(control::align_center);

label->setmargin(5);

label->setfont(osgtext::readfontfile("data"));

label->setencoding(osgtext::string::encoding_utf8);

center->addcontrol(label);

《OSG3 4 0》Part2 OSG中的多執行緒

osg中的多執行緒 osg中的多執行緒是通過openthreads實現的。主要有七大類 thread 預設建構函式 static int yieldcurrentthread 要求當前執行緒出讓cpu控制權,交給其他正在等待的執行緒 int start 啟動執行緒。此時將自動開始執行執行緒的run ...

OSG中圓錐的使用

以前寫的一些測試程式,整理一下,看什麼時候需要用的時候能把功能盡快新增到工程中。圓錐的使用,包括圓錐大小的定義,圓錐的顏色修改,圓錐的透明效果,圓錐的線框模型,圓錐的旋轉,圓錐的中心點。如下 pragma comment lib,osg.lib pragma comment lib,osgdb.li...

OSG中LOD的使用

lod是level of detail 的縮寫,lod允許程式根據攝像機與物體的距離,來決定使用哪個模型。使用lod是為了兼顧程式的執行效率與物體顯示的精細程度。當物體離攝像機很遠的時候,物體看起來就是乙個點,這時候你使用再精細的模型,最終螢幕上成像也是乙個點。而你用的模型越精細,計算機內部需要的計...