Browse Source

Add `delta_time_seconds` to the SDL OpenGL renderers (#671)

RE: #627
PROP 65 1 year ago
parent
commit
b3b400895d

+ 5 - 0
demo/sdl_opengl2/nuklear_sdl_gl2.h

@@ -51,6 +51,7 @@ static struct nk_sdl {
     struct nk_sdl_device ogl;
     struct nk_sdl_device ogl;
     struct nk_context ctx;
     struct nk_context ctx;
     struct nk_font_atlas atlas;
     struct nk_font_atlas atlas;
+    float time_of_last_frame;
 } sdl;
 } sdl;
 
 
 NK_INTERN void
 NK_INTERN void
@@ -74,6 +75,10 @@ nk_sdl_render(enum nk_anti_aliasing AA)
     int display_width, display_height;
     int display_width, display_height;
     struct nk_vec2 scale;
     struct nk_vec2 scale;
 
 
+    float now = ((float)SDL_GetTicks64()) / 1000;
+    sdl.ctx.delta_time_seconds = now - sdl.time_of_last_frame;
+    sdl.time_of_last_frame = now;
+
     SDL_GetWindowSize(sdl.win, &width, &height);
     SDL_GetWindowSize(sdl.win, &width, &height);
     SDL_GL_GetDrawableSize(sdl.win, &display_width, &display_height);
     SDL_GL_GetDrawableSize(sdl.win, &display_width, &display_height);
     scale.x = (float)display_width/(float)width;
     scale.x = (float)display_width/(float)width;

+ 10 - 4
demo/sdl_opengl3/nuklear_sdl_gl3.h

@@ -67,6 +67,7 @@ static struct nk_sdl {
     struct nk_sdl_device ogl;
     struct nk_sdl_device ogl;
     struct nk_context ctx;
     struct nk_context ctx;
     struct nk_font_atlas atlas;
     struct nk_font_atlas atlas;
+    float time_of_last_frame;
 } sdl;
 } sdl;
 
 
 #ifdef __APPLE__
 #ifdef __APPLE__
@@ -192,11 +193,16 @@ nk_sdl_render(enum nk_anti_aliasing AA, int max_vertex_buffer, int max_element_b
     int display_width, display_height;
     int display_width, display_height;
     struct nk_vec2 scale;
     struct nk_vec2 scale;
     GLfloat ortho[4][4] = {
     GLfloat ortho[4][4] = {
-        {2.0f, 0.0f, 0.0f, 0.0f},
-        {0.0f,-2.0f, 0.0f, 0.0f},
-        {0.0f, 0.0f,-1.0f, 0.0f},
-        {-1.0f,1.0f, 0.0f, 1.0f},
+        {  2.0f,  0.0f,  0.0f, 0.0f },
+        {  0.0f, -2.0f,  0.0f, 0.0f },
+        {  0.0f,  0.0f, -1.0f, 0.0f },
+        { -1.0f,  1.0f,  0.0f, 1.0f },
     };
     };
+
+    float now = ((float)SDL_GetTicks64()) / 1000;
+    sdl.ctx.delta_time_seconds = now - sdl.time_of_last_frame;
+    sdl.time_of_last_frame = now;
+
     SDL_GetWindowSize(sdl.win, &width, &height);
     SDL_GetWindowSize(sdl.win, &width, &height);
     SDL_GL_GetDrawableSize(sdl.win, &display_width, &display_height);
     SDL_GL_GetDrawableSize(sdl.win, &display_width, &display_height);
     ortho[0][0] /= (GLfloat)width;
     ortho[0][0] /= (GLfloat)width;

+ 10 - 4
demo/sdl_opengles2/nuklear_sdl_gles2.h

@@ -71,6 +71,7 @@ static struct nk_sdl {
     struct nk_sdl_device ogl;
     struct nk_sdl_device ogl;
     struct nk_context ctx;
     struct nk_context ctx;
     struct nk_font_atlas atlas;
     struct nk_font_atlas atlas;
+    float time_of_last_frame;
 } sdl;
 } sdl;
 
 
 
 
@@ -180,11 +181,16 @@ nk_sdl_render(enum nk_anti_aliasing AA, int max_vertex_buffer, int max_element_b
     int display_width, display_height;
     int display_width, display_height;
     struct nk_vec2 scale;
     struct nk_vec2 scale;
     GLfloat ortho[4][4] = {
     GLfloat ortho[4][4] = {
-        {2.0f, 0.0f, 0.0f, 0.0f},
-        {0.0f,-2.0f, 0.0f, 0.0f},
-        {0.0f, 0.0f,-1.0f, 0.0f},
-        {-1.0f,1.0f, 0.0f, 1.0f},
+        {  2.0f,  0.0f,  0.0f, 0.0f },
+        {  0.0f, -2.0f,  0.0f, 0.0f },
+        {  0.0f,  0.0f, -1.0f, 0.0f },
+        { -1.0f,  1.0f,  0.0f, 1.0f },
     };
     };
+
+    float now = ((float)SDL_GetTicks64()) / 1000;
+    sdl.ctx.delta_time_seconds = now - sdl.time_of_last_frame;
+    sdl.time_of_last_frame = now;
+
     SDL_GetWindowSize(sdl.win, &width, &height);
     SDL_GetWindowSize(sdl.win, &width, &height);
     SDL_GL_GetDrawableSize(sdl.win, &display_width, &display_height);
     SDL_GL_GetDrawableSize(sdl.win, &display_width, &display_height);
     ortho[0][0] /= (GLfloat)width;
     ortho[0][0] /= (GLfloat)width;