Open Geistyp opened 8 years ago
Can you try after commenting out
io->Fonts->ClearTexData();
setup() AddFont()
comment io->Fonts->ClearTexData();
font texture still not allocate, maybe separate a method to create font texture
bool ImGui_ImplGlfwGL3_CreateFontsTexture()
Hi Guys,
I'm struggling to use a Unicode font (need it for arrows on buttons) I have this code in ofApp::setup()
// Load unicode font, has to be done before gui set up - see https://github.com/jvcleave/ofxImGui/issues/19
ImGuiIO * io = &ImGui::GetIO();
ImFontConfig font_config; font_config.OversampleH = 1; font_config.OversampleV = 1; font_config.PixelSnapH = 1;
// load Lucinda SansRegular Unicode font - file name L_10646.TTF
unicodeFont = io->Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\L_10646.ttf", 16.0f, NULL, io->Fonts->GetGlyphRangesDefault());
unsigned char * pixels;
int width, height;
io->Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);
gui.setup();
ImGui::GetIO().MouseDrawCursor = false;
But I can't work out how to swap between the default font and my unicode one. I just always get the unicode one, and it doesn't look very crisp.
Then even when using the Unicode font I just get a question mark in the button from this
ImGui::Button(u8"\u2190"); // Unicode left arrow
Any advice greatly appreciated
Thanks Richard
I figured it out eventually, my code is now
// Load unicode font, has to be done before gui set up - see https://github.com/jvcleave/ofxImGui/issues/19
io = &ImGui::GetIO();
// set default font in font atlas
ImFont* font0 = io->Fonts->AddFontDefault();
// load Lucinda SansRegular Unicode font - file name L_10646.TTF
ImFontConfig font_config; font_config.OversampleH = 1; font_config.OversampleV = 1; font_config.PixelSnapH = 1;
static const ImWchar glyphRanges[] = { 0x0020, 0x266F, 0, }; // Everything
unicodeFont = io->Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\L_10646.ttf", 18.0f, &font_config, &glyphRanges[0]);
unsigned char* pixels;
int width, height;
io->Fonts->GetTexDataAsAlpha8(&pixels, &width, &height);
For anyone trying to change the font on today's master; this currently works:
//create an actual ImGui context before setting up the addon
ImGui::CreateContext();
//specify a font to use
&ImGui::GetIO().Fonts->AddFontFromFileTTF(&ofToDataPath("fonts/VeraMono.ttf")[0], 14.f);
gui.setup(); //finally setup the addon ofxImGui::Gui setup;
The trick is to create the native ImGui context before adding a font; otherwise ImGui complains about not being initalized... And if you add the font after setting up the addon, it's already too late.
Note that ofxImGui's setup() (gui.setup()
) does internally call ImGui::CreateContext();
again, but it's not a problem as this second call is ignored.
README.md is like this, but not work for me
Font texture create in setup()->createDeviceObjects()
So after setup(), I can't add any font, below code work for me
By the way, this line is important to add unicode font, or you just see white grid.