mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Merge branch 'master' into navigation
This commit is contained in:
commit
7e1496e994
@ -24,7 +24,7 @@
|
|||||||
#include "imgui_impl_sdl_gl2.h"
|
#include "imgui_impl_sdl_gl2.h"
|
||||||
|
|
||||||
// Data
|
// Data
|
||||||
static double g_Time = 0.0f;
|
static Uint64 g_Time = 0;
|
||||||
static bool g_MousePressed[3] = { false, false, false };
|
static bool g_MousePressed[3] = { false, false, false };
|
||||||
static GLuint g_FontTexture = 0;
|
static GLuint g_FontTexture = 0;
|
||||||
|
|
||||||
@ -154,7 +154,8 @@ bool ImGui_ImplSdlGL2_ProcessEvent(SDL_Event* event)
|
|||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
{
|
{
|
||||||
int key = event->key.keysym.sym & ~SDLK_SCANCODE_MASK;
|
int key = event->key.keysym.scancode;
|
||||||
|
IM_ASSERT(key >= 0 && key < IM_ARRAYSIZE(io.KeysDown));
|
||||||
io.KeysDown[key] = (event->type == SDL_KEYDOWN);
|
io.KeysDown[key] = (event->type == SDL_KEYDOWN);
|
||||||
io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0);
|
io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0);
|
||||||
io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0);
|
io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0);
|
||||||
@ -205,8 +206,9 @@ void ImGui_ImplSdlGL2_InvalidateDeviceObjects()
|
|||||||
|
|
||||||
bool ImGui_ImplSdlGL2_Init(SDL_Window* window)
|
bool ImGui_ImplSdlGL2_Init(SDL_Window* window)
|
||||||
{
|
{
|
||||||
|
// Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array.
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
io.KeyMap[ImGuiKey_Tab] = SDLK_TAB; // Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array.
|
io.KeyMap[ImGuiKey_Tab] = SDL_SCANCODE_TAB;
|
||||||
io.KeyMap[ImGuiKey_LeftArrow] = SDL_SCANCODE_LEFT;
|
io.KeyMap[ImGuiKey_LeftArrow] = SDL_SCANCODE_LEFT;
|
||||||
io.KeyMap[ImGuiKey_RightArrow] = SDL_SCANCODE_RIGHT;
|
io.KeyMap[ImGuiKey_RightArrow] = SDL_SCANCODE_RIGHT;
|
||||||
io.KeyMap[ImGuiKey_UpArrow] = SDL_SCANCODE_UP;
|
io.KeyMap[ImGuiKey_UpArrow] = SDL_SCANCODE_UP;
|
||||||
@ -216,16 +218,16 @@ bool ImGui_ImplSdlGL2_Init(SDL_Window* window)
|
|||||||
io.KeyMap[ImGuiKey_Home] = SDL_SCANCODE_HOME;
|
io.KeyMap[ImGuiKey_Home] = SDL_SCANCODE_HOME;
|
||||||
io.KeyMap[ImGuiKey_End] = SDL_SCANCODE_END;
|
io.KeyMap[ImGuiKey_End] = SDL_SCANCODE_END;
|
||||||
io.KeyMap[ImGuiKey_Insert] = SDL_SCANCODE_INSERT;
|
io.KeyMap[ImGuiKey_Insert] = SDL_SCANCODE_INSERT;
|
||||||
io.KeyMap[ImGuiKey_Delete] = SDLK_DELETE;
|
io.KeyMap[ImGuiKey_Delete] = SDL_SCANCODE_DELETE;
|
||||||
io.KeyMap[ImGuiKey_Backspace] = SDLK_BACKSPACE;
|
io.KeyMap[ImGuiKey_Backspace] = SDL_SCANCODE_BACKSPACE;
|
||||||
io.KeyMap[ImGuiKey_Enter] = SDLK_RETURN;
|
io.KeyMap[ImGuiKey_Enter] = SDL_SCANCODE_RETURN;
|
||||||
io.KeyMap[ImGuiKey_Escape] = SDLK_ESCAPE;
|
io.KeyMap[ImGuiKey_Escape] = SDL_SCANCODE_ESCAPE;
|
||||||
io.KeyMap[ImGuiKey_A] = SDLK_a;
|
io.KeyMap[ImGuiKey_A] = SDL_SCANCODE_A;
|
||||||
io.KeyMap[ImGuiKey_C] = SDLK_c;
|
io.KeyMap[ImGuiKey_C] = SDL_SCANCODE_C;
|
||||||
io.KeyMap[ImGuiKey_V] = SDLK_v;
|
io.KeyMap[ImGuiKey_V] = SDL_SCANCODE_V;
|
||||||
io.KeyMap[ImGuiKey_X] = SDLK_x;
|
io.KeyMap[ImGuiKey_X] = SDL_SCANCODE_X;
|
||||||
io.KeyMap[ImGuiKey_Y] = SDLK_y;
|
io.KeyMap[ImGuiKey_Y] = SDL_SCANCODE_Y;
|
||||||
io.KeyMap[ImGuiKey_Z] = SDLK_z;
|
io.KeyMap[ImGuiKey_Z] = SDL_SCANCODE_Z;
|
||||||
|
|
||||||
io.RenderDrawListsFn = ImGui_ImplSdlGL2_RenderDrawLists; // Alternatively you can set this to NULL and call ImGui::GetDrawData() after ImGui::Render() to get the same ImDrawData pointer.
|
io.RenderDrawListsFn = ImGui_ImplSdlGL2_RenderDrawLists; // Alternatively you can set this to NULL and call ImGui::GetDrawData() after ImGui::Render() to get the same ImDrawData pointer.
|
||||||
io.SetClipboardTextFn = ImGui_ImplSdlGL2_SetClipboardText;
|
io.SetClipboardTextFn = ImGui_ImplSdlGL2_SetClipboardText;
|
||||||
@ -265,10 +267,10 @@ void ImGui_ImplSdlGL2_NewFrame(SDL_Window *window)
|
|||||||
io.DisplaySize = ImVec2((float)w, (float)h);
|
io.DisplaySize = ImVec2((float)w, (float)h);
|
||||||
io.DisplayFramebufferScale = ImVec2(w > 0 ? ((float)display_w / w) : 0, h > 0 ? ((float)display_h / h) : 0);
|
io.DisplayFramebufferScale = ImVec2(w > 0 ? ((float)display_w / w) : 0, h > 0 ? ((float)display_h / h) : 0);
|
||||||
|
|
||||||
// Setup time step
|
// Setup time step (we don't use SDL_GetTicks() because it is using millisecond resolution)
|
||||||
Uint32 time = SDL_GetTicks();
|
static Uint64 frequency = SDL_GetPerformanceFrequency();
|
||||||
double current_time = time / 1000.0;
|
Uint64 current_time = SDL_GetPerformanceCounter();
|
||||||
io.DeltaTime = g_Time > 0.0 ? (float)(current_time - g_Time) : (float)(1.0f / 60.0f);
|
io.DeltaTime = g_Time > 0 ? (float)((double)(current_time - g_Time) / frequency) : (float)(1.0f / 60.0f);
|
||||||
g_Time = current_time;
|
g_Time = current_time;
|
||||||
|
|
||||||
// Setup mouse inputs (we already got mouse wheel, keyboard keys & characters from our event handler)
|
// Setup mouse inputs (we already got mouse wheel, keyboard keys & characters from our event handler)
|
||||||
|
@ -31,6 +31,7 @@ int main(int, char**)
|
|||||||
SDL_GetCurrentDisplayMode(0, ¤t);
|
SDL_GetCurrentDisplayMode(0, ¤t);
|
||||||
SDL_Window *window = SDL_CreateWindow("ImGui SDL2+OpenGL example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);
|
SDL_Window *window = SDL_CreateWindow("ImGui SDL2+OpenGL example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);
|
||||||
SDL_GLContext glcontext = SDL_GL_CreateContext(window);
|
SDL_GLContext glcontext = SDL_GL_CreateContext(window);
|
||||||
|
SDL_GL_SetSwapInterval(1); // Enable vsync
|
||||||
|
|
||||||
// Setup ImGui binding
|
// Setup ImGui binding
|
||||||
ImGui_ImplSdlGL2_Init(window);
|
ImGui_ImplSdlGL2_Init(window);
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <GL/gl3w.h> // This example is using gl3w to access OpenGL functions (because it is small). You may use glew/glad/glLoadGen/etc. whatever already works for you.
|
#include <GL/gl3w.h> // This example is using gl3w to access OpenGL functions (because it is small). You may use glew/glad/glLoadGen/etc. whatever already works for you.
|
||||||
|
|
||||||
// Data
|
// Data
|
||||||
static double g_Time = 0.0f;
|
static Uint64 g_Time = 0.0f;
|
||||||
static bool g_MousePressed[3] = { false, false, false };
|
static bool g_MousePressed[3] = { false, false, false };
|
||||||
static GLuint g_FontTexture = 0;
|
static GLuint g_FontTexture = 0;
|
||||||
static int g_ShaderHandle = 0, g_VertHandle = 0, g_FragHandle = 0;
|
static int g_ShaderHandle = 0, g_VertHandle = 0, g_FragHandle = 0;
|
||||||
@ -176,7 +176,8 @@ bool ImGui_ImplSdlGL3_ProcessEvent(SDL_Event* event)
|
|||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
{
|
{
|
||||||
int key = event->key.keysym.sym & ~SDLK_SCANCODE_MASK;
|
int key = event->key.keysym.scancode;
|
||||||
|
IM_ASSERT(key >= 0 && key < IM_ARRAYSIZE(io.KeysDown));
|
||||||
io.KeysDown[key] = (event->type == SDL_KEYDOWN);
|
io.KeysDown[key] = (event->type == SDL_KEYDOWN);
|
||||||
io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0);
|
io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0);
|
||||||
io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0);
|
io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0);
|
||||||
@ -316,8 +317,9 @@ void ImGui_ImplSdlGL3_InvalidateDeviceObjects()
|
|||||||
|
|
||||||
bool ImGui_ImplSdlGL3_Init(SDL_Window* window)
|
bool ImGui_ImplSdlGL3_Init(SDL_Window* window)
|
||||||
{
|
{
|
||||||
|
// Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array.
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
io.KeyMap[ImGuiKey_Tab] = SDLK_TAB; // Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array.
|
io.KeyMap[ImGuiKey_Tab] = SDL_SCANCODE_TAB;
|
||||||
io.KeyMap[ImGuiKey_LeftArrow] = SDL_SCANCODE_LEFT;
|
io.KeyMap[ImGuiKey_LeftArrow] = SDL_SCANCODE_LEFT;
|
||||||
io.KeyMap[ImGuiKey_RightArrow] = SDL_SCANCODE_RIGHT;
|
io.KeyMap[ImGuiKey_RightArrow] = SDL_SCANCODE_RIGHT;
|
||||||
io.KeyMap[ImGuiKey_UpArrow] = SDL_SCANCODE_UP;
|
io.KeyMap[ImGuiKey_UpArrow] = SDL_SCANCODE_UP;
|
||||||
@ -327,16 +329,16 @@ bool ImGui_ImplSdlGL3_Init(SDL_Window* window)
|
|||||||
io.KeyMap[ImGuiKey_Home] = SDL_SCANCODE_HOME;
|
io.KeyMap[ImGuiKey_Home] = SDL_SCANCODE_HOME;
|
||||||
io.KeyMap[ImGuiKey_End] = SDL_SCANCODE_END;
|
io.KeyMap[ImGuiKey_End] = SDL_SCANCODE_END;
|
||||||
io.KeyMap[ImGuiKey_Insert] = SDL_SCANCODE_INSERT;
|
io.KeyMap[ImGuiKey_Insert] = SDL_SCANCODE_INSERT;
|
||||||
io.KeyMap[ImGuiKey_Delete] = SDLK_DELETE;
|
io.KeyMap[ImGuiKey_Delete] = SDL_SCANCODE_DELETE;
|
||||||
io.KeyMap[ImGuiKey_Backspace] = SDLK_BACKSPACE;
|
io.KeyMap[ImGuiKey_Backspace] = SDL_SCANCODE_BACKSPACE;
|
||||||
io.KeyMap[ImGuiKey_Enter] = SDLK_RETURN;
|
io.KeyMap[ImGuiKey_Enter] = SDL_SCANCODE_RETURN;
|
||||||
io.KeyMap[ImGuiKey_Escape] = SDLK_ESCAPE;
|
io.KeyMap[ImGuiKey_Escape] = SDL_SCANCODE_ESCAPE;
|
||||||
io.KeyMap[ImGuiKey_A] = SDLK_a;
|
io.KeyMap[ImGuiKey_A] = SDL_SCANCODE_A;
|
||||||
io.KeyMap[ImGuiKey_C] = SDLK_c;
|
io.KeyMap[ImGuiKey_C] = SDL_SCANCODE_C;
|
||||||
io.KeyMap[ImGuiKey_V] = SDLK_v;
|
io.KeyMap[ImGuiKey_V] = SDL_SCANCODE_V;
|
||||||
io.KeyMap[ImGuiKey_X] = SDLK_x;
|
io.KeyMap[ImGuiKey_X] = SDL_SCANCODE_X;
|
||||||
io.KeyMap[ImGuiKey_Y] = SDLK_y;
|
io.KeyMap[ImGuiKey_Y] = SDL_SCANCODE_Y;
|
||||||
io.KeyMap[ImGuiKey_Z] = SDLK_z;
|
io.KeyMap[ImGuiKey_Z] = SDL_SCANCODE_Z;
|
||||||
|
|
||||||
io.RenderDrawListsFn = ImGui_ImplSdlGL3_RenderDrawLists; // Alternatively you can set this to NULL and call ImGui::GetDrawData() after ImGui::Render() to get the same ImDrawData pointer.
|
io.RenderDrawListsFn = ImGui_ImplSdlGL3_RenderDrawLists; // Alternatively you can set this to NULL and call ImGui::GetDrawData() after ImGui::Render() to get the same ImDrawData pointer.
|
||||||
io.SetClipboardTextFn = ImGui_ImplSdlGL3_SetClipboardText;
|
io.SetClipboardTextFn = ImGui_ImplSdlGL3_SetClipboardText;
|
||||||
@ -376,10 +378,10 @@ void ImGui_ImplSdlGL3_NewFrame(SDL_Window* window)
|
|||||||
io.DisplaySize = ImVec2((float)w, (float)h);
|
io.DisplaySize = ImVec2((float)w, (float)h);
|
||||||
io.DisplayFramebufferScale = ImVec2(w > 0 ? ((float)display_w / w) : 0, h > 0 ? ((float)display_h / h) : 0);
|
io.DisplayFramebufferScale = ImVec2(w > 0 ? ((float)display_w / w) : 0, h > 0 ? ((float)display_h / h) : 0);
|
||||||
|
|
||||||
// Setup time step
|
// Setup time step (we don't use SDL_GetTicks() because it is using millisecond resolution)
|
||||||
Uint32 time = SDL_GetTicks();
|
static Uint64 frequency = SDL_GetPerformanceFrequency();
|
||||||
double current_time = time / 1000.0;
|
Uint64 current_time = SDL_GetPerformanceCounter();
|
||||||
io.DeltaTime = g_Time > 0.0 ? (float)(current_time - g_Time) : (float)(1.0f / 60.0f);
|
io.DeltaTime = g_Time > 0 ? (float)((double)(current_time - g_Time) / frequency) : (float)(1.0f / 60.0f);
|
||||||
g_Time = current_time;
|
g_Time = current_time;
|
||||||
|
|
||||||
// Setup mouse inputs (we already got mouse wheel, keyboard keys & characters from our event handler)
|
// Setup mouse inputs (we already got mouse wheel, keyboard keys & characters from our event handler)
|
||||||
|
@ -30,6 +30,7 @@ int main(int, char**)
|
|||||||
SDL_GetCurrentDisplayMode(0, ¤t);
|
SDL_GetCurrentDisplayMode(0, ¤t);
|
||||||
SDL_Window *window = SDL_CreateWindow("ImGui SDL2+OpenGL3 example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);
|
SDL_Window *window = SDL_CreateWindow("ImGui SDL2+OpenGL3 example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);
|
||||||
SDL_GLContext glcontext = SDL_GL_CreateContext(window);
|
SDL_GLContext glcontext = SDL_GL_CreateContext(window);
|
||||||
|
SDL_GL_SetSwapInterval(1); // Enable vsync
|
||||||
gl3wInit();
|
gl3wInit();
|
||||||
|
|
||||||
// Setup ImGui binding
|
// Setup ImGui binding
|
||||||
|
Loading…
Reference in New Issue
Block a user