aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp26
-rw-r--r--src/vk-renderer.cpp31
-rw-r--r--src/window.cpp2
3 files changed, 42 insertions, 17 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 07e799b..9d201a1 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -67,6 +67,7 @@ int main() {
start = std::chrono::high_resolution_clock::now();
ImGuiIO& io = ImGui::GetIO();
+ io.DeltaTime = delta_time;
wnd.poll_events();
@@ -129,6 +130,31 @@ int main() {
break;
}
+ case EVENT_TYPES::BUTTON_PRESS: {
+ if (event.button == BUTTONS::LEFT) {
+ io.MouseDown[0] = true;
+ }
+ if (event.button == BUTTONS::RIGHT) {
+ io.MouseDown[1] = true;
+ }
+ break;
+ }
+ case EVENT_TYPES::BUTTON_RELEASE: {
+ if (event.button == BUTTONS::LEFT) {
+ io.MouseDown[0] = false;
+ }
+ if (event.button == BUTTONS::RIGHT) {
+ io.MouseDown[1] = false;
+ }
+ break;
+ }
+ case EVENT_TYPES::MOUSE_MOVE: {
+ io.MousePos = ImVec2 {
+ (float)event.x,
+ (float)event.y
+ };
+ break;
+ }
default:
break;
}
diff --git a/src/vk-renderer.cpp b/src/vk-renderer.cpp
index 9636465..7f23da6 100644
--- a/src/vk-renderer.cpp
+++ b/src/vk-renderer.cpp
@@ -139,7 +139,6 @@ vkrenderer::vkrenderer(window& wnd, const input_data& inputs) {
ui_texture = api.create_image(atlas_size, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT);
io.Fonts->SetTexID((void*)&ui_texture);
- VKRESULT(vkWaitForFences(api.context.device, 1, &submission_fences[frame_index], VK_TRUE, UINT64_MAX))
VKRESULT(vkResetFences(api.context.device, 1, &submission_fences[frame_index]))
auto cmd_buf = command_buffers[frame_index];
@@ -167,12 +166,12 @@ vkrenderer::vkrenderer(window& wnd, const input_data& inputs) {
api.end_record(cmd_buf);
+
api.submit(cmd_buf, VK_NULL_HANDLE, VK_NULL_HANDLE, submission_fences[frame_index]);
- // VKRESULT(vkWaitForFences(api.context.device, 1, &submission_fences[frame_index], VK_TRUE, UINT64_MAX))
- // VKRESULT(vkResetFences(api.context.device, 1, &submission_fences[frame_index]))
+ VKRESULT(vkWaitForFences(api.context.device, 1, &submission_fences[frame_index], VK_TRUE, UINT64_MAX))
- // api.destroy_buffer(staging_buffer);
+ api.destroy_buffer(staging_buffer);
frame_index++;
@@ -195,11 +194,10 @@ vkrenderer::vkrenderer(window& wnd, const input_data& inputs) {
sampler_create_info.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
sampler_create_info.unnormalizedCoordinates = VK_FALSE;
- VkSampler sampler;
- VKRESULT(vkCreateSampler(api.context.device, &sampler_create_info, VK_NULL_HANDLE, &sampler))
+ VKRESULT(vkCreateSampler(api.context.device, &sampler_create_info, VK_NULL_HANDLE, &ui_texture_sampler))
for (size_t index = 0; index < swapchain.image_count; index++) {
- api.update_descriptor_set_image(ui_sets[index], ui_sets_bindings[2], ui_texture.view, sampler);
+ api.update_descriptor_set_image(ui_sets[index], ui_sets_bindings[2], ui_texture.view, ui_texture_sampler);
}
ui_vertex_buffers.resize(swapchain.image_count);
@@ -224,6 +222,8 @@ vkrenderer::~vkrenderer() {
api.destroy_render_pass(render_pass);
+ vkDestroySampler(api.context.device, ui_texture_sampler, VK_NULL_HANDLE);
+
api.destroy_image(ui_texture);
for (auto& framebuffer: framebuffers) {
@@ -254,6 +254,14 @@ void vkrenderer::begin_frame() {
ImGui::Render();
ImDrawData* draw_data = ImGui::GetDrawData();
+ ((UiTransforms*)ui_transforms_buffers[frame_index].alloc_info.pMappedData)->scale_x = 2.f / draw_data->DisplaySize.x;
+ ((UiTransforms*)ui_transforms_buffers[frame_index].alloc_info.pMappedData)->scale_y = 2.f / draw_data->DisplaySize.y;
+ ((UiTransforms*)ui_transforms_buffers[frame_index].alloc_info.pMappedData)->translate_x = -1.f - draw_data->DisplayPos.x * (2.f / draw_data->DisplaySize.x);
+ ((UiTransforms*)ui_transforms_buffers[frame_index].alloc_info.pMappedData)->translate_y = -1.f - draw_data->DisplayPos.y * (2.f / draw_data->DisplaySize.y);
+
+ VKRESULT(vkWaitForFences(api.context.device, 1, &submission_fences[frame_index], VK_TRUE, UINT64_MAX))
+ VKRESULT(vkResetFences(api.context.device, 1, &submission_fences[frame_index]))
+
// Update descriptor with only the part of the buffer we are interested in
if (ui_vertex_buffers[frame_index].size < draw_data->TotalVtxCount * sizeof(VkVertex)) {
api.destroy_buffer(ui_vertex_buffers[frame_index]);
@@ -267,11 +275,6 @@ void vkrenderer::begin_frame() {
ui_index_buffers[frame_index] = api.create_buffer(draw_data->TotalIdxCount * sizeof(ImDrawIdx), VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VMA_MEMORY_USAGE_CPU_TO_GPU);
}
- ((UiTransforms*)ui_transforms_buffers[frame_index].alloc_info.pMappedData)->scale_x = 2.f / draw_data->DisplaySize.x;
- ((UiTransforms*)ui_transforms_buffers[frame_index].alloc_info.pMappedData)->scale_y = 2.f / draw_data->DisplaySize.y;
- ((UiTransforms*)ui_transforms_buffers[frame_index].alloc_info.pMappedData)->translate_x = -1.f - draw_data->DisplayPos.x * (2.f / draw_data->DisplaySize.x);
- ((UiTransforms*)ui_transforms_buffers[frame_index].alloc_info.pMappedData)->translate_y = -1.f - draw_data->DisplayPos.y * (2.f / draw_data->DisplaySize.y);
-
off_t vertex_buffer_offset = 0;
off_t index_buffer_offset = 0;
for (uint32_t draw_list_index = 0; draw_list_index < draw_data->CmdListsCount; draw_list_index++) {
@@ -290,10 +293,6 @@ void vkrenderer::begin_frame() {
index_buffer_offset += index_buffer.Size;
}
-
- VKRESULT(vkWaitForFences(api.context.device, 1, &submission_fences[frame_index], VK_TRUE, UINT64_MAX))
- VKRESULT(vkResetFences(api.context.device, 1, &submission_fences[frame_index]))
-
swapchain_image_index = 0;
auto acquire_result = vkAcquireNextImageKHR(api.context.device, swapchain.handle, UINT64_MAX, acquire_semaphores[frame_index], VK_NULL_HANDLE, &swapchain_image_index);
handle_swapchain_result(acquire_result);
diff --git a/src/window.cpp b/src/window.cpp
index a353809..320e282 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -335,7 +335,7 @@ LRESULT window::message_handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lpar
events.push_back({
.x = GET_X_LPARAM(lparam),
.y = GET_Y_LPARAM(lparam),
- .type = EVENT_TYPES::MOVE,
+ .type = EVENT_TYPES::MOUSE_MOVE,
});
break;
}