ImFontAtlas: Added TexDesiredWidth and tweaked default cheapo best-width choice(#327)
This commit is contained in:
parent
bc8eb5e9cf
commit
0abe668221
5
imgui.h
5
imgui.h
@ -1230,8 +1230,9 @@ struct ImFontAtlas
|
|||||||
void* TexID; // User data to refer to the texture once it has been uploaded to user's graphic systems. It ia passed back to you during rendering.
|
void* TexID; // User data to refer to the texture once it has been uploaded to user's graphic systems. It ia passed back to you during rendering.
|
||||||
unsigned char* TexPixelsAlpha8; // 1 component per pixel, each component is unsigned 8-bit. Total size = TexWidth * TexHeight
|
unsigned char* TexPixelsAlpha8; // 1 component per pixel, each component is unsigned 8-bit. Total size = TexWidth * TexHeight
|
||||||
unsigned int* TexPixelsRGBA32; // 4 component per pixel, each component is unsigned 8-bit. Total size = TexWidth * TexHeight * 4
|
unsigned int* TexPixelsRGBA32; // 4 component per pixel, each component is unsigned 8-bit. Total size = TexWidth * TexHeight * 4
|
||||||
int TexWidth;
|
int TexWidth; // Texture width calculated during Build().
|
||||||
int TexHeight;
|
int TexHeight; // Texture height calculated during Build().
|
||||||
|
int TexDesiredWidth; // Texture width desired by user before Build(). Must be a power-of-two. If have many glyphs your graphics API have texture size restrictions you may want to increase texture width to decrease height.
|
||||||
ImVec2 TexUvWhitePixel; // Texture coordinates to a white pixel (part of the TexExtraData block)
|
ImVec2 TexUvWhitePixel; // Texture coordinates to a white pixel (part of the TexExtraData block)
|
||||||
ImVector<ImFont*> Fonts;
|
ImVector<ImFont*> Fonts;
|
||||||
|
|
||||||
|
@ -206,9 +206,8 @@ void ImGui::ShowTestWindow(bool* opened)
|
|||||||
{
|
{
|
||||||
ImGui::TextWrapped("Tip: Load fonts with io.Fonts->AddFontFromFileTTF().");
|
ImGui::TextWrapped("Tip: Load fonts with io.Fonts->AddFontFromFileTTF().");
|
||||||
ImFontAtlas* atlas = ImGui::GetIO().Fonts;
|
ImFontAtlas* atlas = ImGui::GetIO().Fonts;
|
||||||
if (ImGui::TreeNode("Atlas texture"))
|
if (ImGui::TreeNode("Atlas texture", "Atlas texture (%dx%d pixels)", atlas->TexWidth, atlas->TexHeight))
|
||||||
{
|
{
|
||||||
ImGui::Text("%dx%d pixels", atlas->TexWidth, atlas->TexHeight);
|
|
||||||
ImGui::Image(atlas->TexID, ImVec2((float)atlas->TexWidth, (float)atlas->TexHeight), ImVec2(0,0), ImVec2(1,1), ImColor(255,255,255,255), ImColor(255,255,255,128));
|
ImGui::Image(atlas->TexID, ImVec2((float)atlas->TexWidth, (float)atlas->TexHeight), ImVec2(0,0), ImVec2(1,1), ImColor(255,255,255,255), ImColor(255,255,255,128));
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
@ -954,7 +954,7 @@ ImFontAtlas::ImFontAtlas()
|
|||||||
TexID = NULL;
|
TexID = NULL;
|
||||||
TexPixelsAlpha8 = NULL;
|
TexPixelsAlpha8 = NULL;
|
||||||
TexPixelsRGBA32 = NULL;
|
TexPixelsRGBA32 = NULL;
|
||||||
TexWidth = TexHeight = 0;
|
TexWidth = TexHeight = TexDesiredWidth = 0;
|
||||||
TexUvWhitePixel = ImVec2(0, 0);
|
TexUvWhitePixel = ImVec2(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1195,7 +1195,7 @@ bool ImFontAtlas::Build()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start packing
|
// Start packing
|
||||||
TexWidth = (total_glyph_count > 1000) ? 1024 : 512; // Width doesn't actually matters.
|
TexWidth = (TexDesiredWidth > 0) ? TexDesiredWidth : (total_glyph_count > 2000) ? 2048 : (total_glyph_count > 1000) ? 1024 : 512; // Width doesn't actually matters much but some API/GPU have texture size limitations, and increasing width can decrease height.
|
||||||
TexHeight = 0;
|
TexHeight = 0;
|
||||||
const int max_tex_height = 1024*32;
|
const int max_tex_height = 1024*32;
|
||||||
stbtt_pack_context spc;
|
stbtt_pack_context spc;
|
||||||
|
Loading…
Reference in New Issue
Block a user