imgui で UTF-8 なテキスト(漢字等)を表示する
https://github.com/ocornut/imgui で UFT-8なテキストを表示するための方法のメモです
環境
Windows 10 pro
DxLib 3.1.6f
visual studio professional 2015
Unicode 文字セットを使用する
初期化
フォントの設定を行います。
E_RESULT init_draw()
{
g_pd3dDevice = (LPDIRECT3DDEVICE9)GetUseDirect3DDevice9();
ImGui_ImplDX9_Init(mainWindowHandle, g_pd3dDevice);
//フォントの設定を行う。IPAゴシック 14ポイント
ImGuiIO& io = ImGui::GetIO();
io.Fonts->AddFontFromFileTTF("resource\\ipag.ttf", 14.0f, nullptr, io.Fonts->GetGlyphRangesJapanese());
return E_RESULT_SUCCESS;
}
表示の実際
サンプルプログラムを見ると文字コード直接埋め込みでした。
imgui_demo.cpp
// 384行目付近を抜粋
ImGui::Text("Hiragana: \xe3\x81\x8b\xe3\x81\x8d\xe3\x81\x8f\xe3\x81\x91\xe3\x81\x93 (kakikukeko)");
ImGui::Text("Kanjis: \xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e (nihongo)");
これでは面倒なので調べたところ、なんてことはありませんでした。
u8リテラル指定だけで表示できます。
E_RESULT exec_draw_imgui()
{
RenderVertex();
getInputEvent();
ImGui_ImplDX9_NewFrame();
// 漢字を u8 リテラルで指定するところがポイントです
{
static float f = 0.0f;
ImGui::Begin(u8"メインメニュー", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
ImGui::ColorEdit3("clear color", (float*)&clear_col);
ImGui::End();
}
// Rendering
g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, false);
g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, false);
D3DCOLOR clear_col_dx = D3DCOLOR_RGBA((int)(clear_col.x*255.0f), (int)(clear_col.y*255.0f), (int)(clear_col.z*255.0f), (int)(clear_col.w*255.0f));
ImGui::Render();
g_pd3dDevice->Present(NULL, NULL, NULL, NULL);
RefreshDxLibDirect3DSetting();
return E_RESULT_SUCCESS;
}
Author And Source
この問題について(imgui で UTF-8 なテキスト(漢字等)を表示する), 我々は、より多くの情報をここで見つけました https://qiita.com/shigetoshimizuno/items/565258a9099545302cb6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .