Create ImGui fonts per swapchain

pull/43/head
jackun 4 years ago
parent 099082affc
commit 2fb0453e28
No known key found for this signature in database
GPG Key ID: 119DB3F1D05A9ED3

@ -60,8 +60,6 @@ string gpuString;
float offset_x, offset_y, hudSpacing;
int hudFirstRow, hudSecondRow;
string engineName, engineVersion;
ImFont* font = nullptr;
ImFont* font1 = nullptr;
struct amdGpu amdgpu;
int64_t frameStart, frameEnd, targetFrameTime = 0, frameOverhead = 0, sleepTime = 0;
@ -191,6 +189,8 @@ struct swapchain_data {
struct list_head draws; /* List of struct overlay_draw */
ImFont* font = nullptr;
ImFont* font1 = nullptr;
bool font_uploaded;
VkImage font_image;
VkImageView font_image_view;
@ -1142,7 +1142,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
std::time_t t = std::time(nullptr);
std::stringstream time;
time << std::put_time(std::localtime(&t), "%T");
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.00f), "%s", time.str().c_str());
ImGui::PopFont();
}
@ -1176,7 +1176,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
{
ImGui::TextColored(ImVec4(0.180, 0.592, 0.796, 1.00f), "CPU");
ImGui::SameLine(0, 1.0f);
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::TextColored(ImVec4(0.180, 0.592, 0.796, 1.00f),"%i", i);
ImGui::PopFont();
ImGui::SameLine(hudFirstRow);
@ -1184,7 +1184,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
ImGui::SameLine(hudSecondRow);
ImGui::Text("%i", cpuData.mhz);
ImGui::SameLine(0, 1.0f);
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::Text("MHz");
ImGui::PopFont();
i++;
@ -1195,7 +1195,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
ImGui::SameLine(hudFirstRow);
ImGui::Text("%.2f", gpuMemUsed);
ImGui::SameLine(0,1.0f);
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::Text("GB");
ImGui::PopFont();
}
@ -1204,7 +1204,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
ImGui::SameLine(hudFirstRow);
ImGui::Text("%.2f", memused);
ImGui::SameLine(0,1.0f);
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::Text("GB");
ImGui::PopFont();
}
@ -1213,17 +1213,17 @@ static void compute_swapchain_display(struct swapchain_data *data)
ImGui::SameLine(hudFirstRow);
ImGui::Text("%.0f", data->fps);
ImGui::SameLine(0, 1.0f);
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::Text("FPS");
ImGui::PopFont();
ImGui::SameLine(hudSecondRow);
ImGui::Text("%.1f", 1000 / data->fps);
ImGui::SameLine(0, 1.0f);
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::Text("ms");
ImGui::PopFont();
if (engineName == "DXVK" || engineName == "VKD3D"){
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::TextColored(ImVec4(0.925, 0.411, 0.411, 1.00f), "%s", engineVersion.c_str());
ImGui::PopFont();
}
@ -1240,7 +1240,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
if (instance_data->params.enabled[OVERLAY_PARAM_ENABLED_frame_timing]){
ImGui::Dummy(ImVec2(0.0f, instance_data->params.font_size / 2));
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::TextColored(ImVec4(0.925, 0.411, 0.411, 1.00f), "%s", "Frametime");
ImGui::PopFont();
}
@ -1271,7 +1271,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
}
if (instance_data->params.enabled[OVERLAY_PARAM_ENABLED_frame_timing]){
ImGui::SameLine(0,1.0f);
ImGui::PushFont(font1);
ImGui::PushFont(data->font1);
ImGui::Text("%.1f ms", 1000 / data->fps);
ImGui::PopFont();
}
@ -1882,16 +1882,17 @@ static void setup_swapchain_data_pipeline(struct swapchain_data *data)
font_size = 24;
const char* mangohud_font = getenv("MANGOHUD_FONT");
if(mangohud_font) {
font = io.Fonts->AddFontFromFileTTF(mangohud_font, font_size);
font1 = io.Fonts->AddFontFromFileTTF(mangohud_font, font_size * 0.55f);
// ImGui takes ownership of the data, no need to free it
if (mangohud_font && file_exists(mangohud_font)) {
data->font = io.Fonts->AddFontFromFileTTF(mangohud_font, font_size);
data->font1 = io.Fonts->AddFontFromFileTTF(mangohud_font, font_size * 0.55f);
} else {
ImFontConfig font_cfg = ImFontConfig();
const char* ttf_compressed_base85 = GetDefaultCompressedFontDataTTFBase85();
const ImWchar* glyph_ranges = io.Fonts->GetGlyphRangesDefault();
font = io.Fonts->AddFontFromMemoryCompressedBase85TTF(ttf_compressed_base85, font_size, &font_cfg, glyph_ranges);
font1 = io.Fonts->AddFontFromMemoryCompressedBase85TTF(ttf_compressed_base85, font_size * 0.55, &font_cfg, glyph_ranges);
data->font = io.Fonts->AddFontFromMemoryCompressedBase85TTF(ttf_compressed_base85, font_size, &font_cfg, glyph_ranges);
data->font1 = io.Fonts->AddFontFromMemoryCompressedBase85TTF(ttf_compressed_base85, font_size * 0.55, &font_cfg, glyph_ranges);
}
unsigned char* pixels;
int width, height;

Loading…
Cancel
Save