diff --git a/graphics/src/vulkan_base.c b/graphics/src/vulkan_base.c index 2fa50232..89cd30e9 100644 --- a/graphics/src/vulkan_base.c +++ b/graphics/src/vulkan_base.c @@ -562,13 +562,13 @@ uint8_t init_vulkan() STATUS_CHECK(create_descriptors()); STATUS_CHECK(create_sync_objects()); + + rse_init_time(); return status; } void draw_frame() { - vkWaitForFences(g_vulkan_state.device, 1, &g_in_flight_fences[g_vulkan_state.current_frame], VK_TRUE, UINT64_MAX); - uint32_t image_index = 0U; VkResult result = VK_FALSE; VkSubmitInfo submit_info = {}; @@ -578,6 +578,10 @@ void draw_frame() VkPresentInfoKHR present_info = {}; VkSwapchainKHR swap_chains[1]; + vkWaitForFences(g_vulkan_state.device, 1, &g_in_flight_fences[g_vulkan_state.current_frame], VK_TRUE, UINT64_MAX); + + rse_update_time(); + result = vkAcquireNextImageKHR(g_vulkan_state.device, g_vulkan_state.swapchain, UINT64_MAX, g_image_available_semaphores[g_vulkan_state.current_frame], VK_NULL_HANDLE, &image_index); diff --git a/graphics/src/vulkan_commons.c b/graphics/src/vulkan_commons.c index 5fee13a9..d0e261f2 100644 --- a/graphics/src/vulkan_commons.c +++ b/graphics/src/vulkan_commons.c @@ -1,3 +1,26 @@ #include "vulkan_commons.h" -struct rse_vulkan_state_t g_vulkan_state; \ No newline at end of file +#include + +struct rse_vulkan_state_t g_vulkan_state; + +time_t g_last_frame_time; +time_t g_this_frame_time; +float g_float_delta_time; + +void rse_init_time() +{ + time(&g_last_frame_time); +} + +void rse_update_time() +{ + g_last_frame_time = g_this_frame_time; + time(&g_this_frame_time); + g_float_delta_time = (float)difftime(g_this_frame_time, g_last_frame_time); +} + +float inline rse_get_time_diff() +{ + return g_float_delta_time; +} \ No newline at end of file diff --git a/graphics/src/vulkan_commons.h b/graphics/src/vulkan_commons.h index c44acab1..aaf0e8aa 100644 --- a/graphics/src/vulkan_commons.h +++ b/graphics/src/vulkan_commons.h @@ -79,4 +79,8 @@ struct rse_instance_data_t { float scale; }; +void rse_init_time(); +void rse_update_time(); +float inline rse_get_time_diff(); + #endif /* RSE_VULKAN_GLOBAL_H */