Added PixelCenterOffset for OpenGL/DirectX compatibility.

This commit is contained in:
ocornut 2014-08-11 14:51:22 +01:00
parent 680a5a9b54
commit 8ab2942716
4 changed files with 10 additions and 4 deletions

View File

@ -293,6 +293,7 @@ void InitImGui()
io.KeyMap[ImGuiKey_X] = 'X'; io.KeyMap[ImGuiKey_X] = 'X';
io.KeyMap[ImGuiKey_Y] = 'Y'; io.KeyMap[ImGuiKey_Y] = 'Y';
io.KeyMap[ImGuiKey_Z] = 'Z'; io.KeyMap[ImGuiKey_Z] = 'Z';
io.PixelCenterOffset = 0.0f;
io.RenderDrawListsFn = ImImpl_RenderDrawLists; io.RenderDrawListsFn = ImImpl_RenderDrawLists;
io.SetClipboardTextFn = ImImpl_SetClipboardTextFn; io.SetClipboardTextFn = ImImpl_SetClipboardTextFn;

View File

@ -297,6 +297,7 @@ void InitImGui()
io.KeyMap[ImGuiKey_X] = GLFW_KEY_X; io.KeyMap[ImGuiKey_X] = GLFW_KEY_X;
io.KeyMap[ImGuiKey_Y] = GLFW_KEY_Y; io.KeyMap[ImGuiKey_Y] = GLFW_KEY_Y;
io.KeyMap[ImGuiKey_Z] = GLFW_KEY_Z; io.KeyMap[ImGuiKey_Z] = GLFW_KEY_Z;
io.PixelCenterOffset = 0.5f;
io.RenderDrawListsFn = ImImpl_RenderDrawLists; io.RenderDrawListsFn = ImImpl_RenderDrawLists;
io.SetClipboardTextFn = ImImpl_SetClipboardTextFn; io.SetClipboardTextFn = ImImpl_SetClipboardTextFn;

View File

@ -262,6 +262,7 @@ ImGuiIO::ImGuiIO()
LogFilename = "imgui_log.txt"; LogFilename = "imgui_log.txt";
Font = NULL; Font = NULL;
FontAllowScaling = false; FontAllowScaling = false;
PixelCenterOffset = 0.5f;
MousePos = ImVec2(-1,-1); MousePos = ImVec2(-1,-1);
MousePosPrev = ImVec2(-1,-1); MousePosPrev = ImVec2(-1,-1);
MouseDoubleClickTime = 0.30f; MouseDoubleClickTime = 0.30f;
@ -5003,6 +5004,8 @@ void ImBitmapFont::RenderText(float size, ImVec2 pos, ImU32 col, const ImVec4& c
float line_width = 0.0f; float line_width = 0.0f;
const ImVec4 clip_rect = clip_rect_ref; const ImVec4 clip_rect = clip_rect_ref;
const float uv_offset = GImGui.IO.PixelCenterOffset;
float x = pos.x; float x = pos.x;
float y = pos.y; float y = pos.y;
for (const char* s = text_begin; s < text_end; s++) for (const char* s = text_begin; s < text_end; s++)
@ -5039,10 +5042,10 @@ void ImBitmapFont::RenderText(float size, ImVec2 pos, ImU32 col, const ImVec4& c
continue; continue;
} }
const float s1 = (0.0f + glyph->X) * tex_scale_x; const float s1 = (uv_offset + glyph->X) * tex_scale_x;
const float t1 = (0.0f + glyph->Y) * tex_scale_y; const float t1 = (uv_offset + glyph->Y) * tex_scale_y;
const float s2 = (0.0f + glyph->X + glyph->Width) * tex_scale_x; const float s2 = (uv_offset + glyph->X + glyph->Width) * tex_scale_x;
const float t2 = (0.0f + glyph->Y + glyph->Height) * tex_scale_y; const float t2 = (uv_offset + glyph->Y + glyph->Height) * tex_scale_y;
out_vertices[0].pos = ImVec2(x1, y1); out_vertices[0].pos = ImVec2(x1, y1);
out_vertices[0].uv = ImVec2(s1, t1); out_vertices[0].uv = ImVec2(s1, t1);

View File

@ -373,6 +373,7 @@ struct ImGuiIO
ImFont Font; // <auto> // Gets passed to text functions. Typedef ImFont to the type you want (ImBitmapFont* or your own font). ImFont Font; // <auto> // Gets passed to text functions. Typedef ImFont to the type you want (ImBitmapFont* or your own font).
float FontHeight; // <auto> // Default font height, must be the vertical distance between two lines of text, aka == CalcTextSize(" ").y float FontHeight; // <auto> // Default font height, must be the vertical distance between two lines of text, aka == CalcTextSize(" ").y
bool FontAllowScaling; // = false // Set to allow scaling text with CTRL+Wheel. bool FontAllowScaling; // = false // Set to allow scaling text with CTRL+Wheel.
float PixelCenterOffset; // = 0.5f // Set to 0.0f for DirectX <= 9, 0.5f for Direct3D >= 10 and OpenGL.
// Settings - Functions (fill once) // Settings - Functions (fill once)
void (*RenderDrawListsFn)(ImDrawList** const draw_lists, int count); // Required void (*RenderDrawListsFn)(ImDrawList** const draw_lists, int count); // Required