|
@@ -216,7 +216,7 @@ struct ImGui_ImplVulkan_WindowRenderBuffers
|
|
|
{
|
|
|
uint32_t Index;
|
|
|
uint32_t Count;
|
|
|
- ImGui_ImplVulkan_FrameRenderBuffers* FrameRenderBuffers;
|
|
|
+ ImVector<ImGui_ImplVulkan_FrameRenderBuffers> FrameRenderBuffers;
|
|
|
};
|
|
|
|
|
|
struct ImGui_ImplVulkan_Texture
|
|
@@ -501,12 +501,12 @@ void ImGui_ImplVulkan_RenderDrawData(ImDrawData* draw_data, VkCommandBuffer comm
|
|
|
|
|
|
// Allocate array to store enough vertex/index buffers
|
|
|
ImGui_ImplVulkan_WindowRenderBuffers* wrb = &bd->MainWindowRenderBuffers;
|
|
|
- if (wrb->FrameRenderBuffers == nullptr)
|
|
|
+ if (wrb->FrameRenderBuffers.Size == 0)
|
|
|
{
|
|
|
wrb->Index = 0;
|
|
|
wrb->Count = v->ImageCount;
|
|
|
- wrb->FrameRenderBuffers = (ImGui_ImplVulkan_FrameRenderBuffers*)IM_ALLOC(sizeof(ImGui_ImplVulkan_FrameRenderBuffers) * wrb->Count);
|
|
|
- memset((void*)wrb->FrameRenderBuffers, 0, sizeof(ImGui_ImplVulkan_FrameRenderBuffers) * wrb->Count);
|
|
|
+ wrb->FrameRenderBuffers.resize(wrb->Count);
|
|
|
+ memset((void*)wrb->FrameRenderBuffers.Data, 0, wrb->FrameRenderBuffers.size_in_bytes());
|
|
|
}
|
|
|
IM_ASSERT(wrb->Count == v->ImageCount);
|
|
|
wrb->Index = (wrb->Index + 1) % wrb->Count;
|
|
@@ -1250,8 +1250,7 @@ void ImGui_ImplVulkan_DestroyWindowRenderBuffers(VkDevice device, ImGui_ImplVulk
|
|
|
{
|
|
|
for (uint32_t n = 0; n < buffers->Count; n++)
|
|
|
ImGui_ImplVulkan_DestroyFrameRenderBuffers(device, &buffers->FrameRenderBuffers[n], allocator);
|
|
|
- IM_FREE(buffers->FrameRenderBuffers);
|
|
|
- buffers->FrameRenderBuffers = nullptr;
|
|
|
+ buffers->FrameRenderBuffers.clear();
|
|
|
buffers->Index = 0;
|
|
|
buffers->Count = 0;
|
|
|
}
|
|
@@ -1460,10 +1459,8 @@ void ImGui_ImplVulkanH_CreateWindowSwapChain(VkPhysicalDevice physical_device, V
|
|
|
ImGui_ImplVulkanH_DestroyFrame(device, &wd->Frames[i], allocator);
|
|
|
for (uint32_t i = 0; i < wd->SemaphoreCount; i++)
|
|
|
ImGui_ImplVulkanH_DestroyFrameSemaphores(device, &wd->FrameSemaphores[i], allocator);
|
|
|
- IM_FREE(wd->Frames);
|
|
|
- IM_FREE(wd->FrameSemaphores);
|
|
|
- wd->Frames = nullptr;
|
|
|
- wd->FrameSemaphores = nullptr;
|
|
|
+ wd->Frames.clear();
|
|
|
+ wd->FrameSemaphores.clear();
|
|
|
wd->ImageCount = 0;
|
|
|
if (wd->RenderPass)
|
|
|
vkDestroyRenderPass(device, wd->RenderPass, allocator);
|
|
@@ -1518,12 +1515,11 @@ void ImGui_ImplVulkanH_CreateWindowSwapChain(VkPhysicalDevice physical_device, V
|
|
|
err = vkGetSwapchainImagesKHR(device, wd->Swapchain, &wd->ImageCount, backbuffers);
|
|
|
check_vk_result(err);
|
|
|
|
|
|
- IM_ASSERT(wd->Frames == nullptr && wd->FrameSemaphores == nullptr);
|
|
|
wd->SemaphoreCount = wd->ImageCount + 1;
|
|
|
- wd->Frames = (ImGui_ImplVulkanH_Frame*)IM_ALLOC(sizeof(ImGui_ImplVulkanH_Frame) * wd->ImageCount);
|
|
|
- wd->FrameSemaphores = (ImGui_ImplVulkanH_FrameSemaphores*)IM_ALLOC(sizeof(ImGui_ImplVulkanH_FrameSemaphores) * wd->SemaphoreCount);
|
|
|
- memset((void*)wd->Frames, 0, sizeof(wd->Frames[0]) * wd->ImageCount);
|
|
|
- memset((void*)wd->FrameSemaphores, 0, sizeof(wd->FrameSemaphores[0]) * wd->SemaphoreCount);
|
|
|
+ wd->Frames.resize(wd->ImageCount);
|
|
|
+ wd->FrameSemaphores.resize(wd->SemaphoreCount);
|
|
|
+ memset(wd->Frames.Data, 0, wd->Frames.size_in_bytes());
|
|
|
+ memset(wd->FrameSemaphores.Data, 0, wd->FrameSemaphores.size_in_bytes());
|
|
|
for (uint32_t i = 0; i < wd->ImageCount; i++)
|
|
|
wd->Frames[i].Backbuffer = backbuffers[i];
|
|
|
}
|
|
@@ -1633,10 +1629,8 @@ void ImGui_ImplVulkanH_DestroyWindow(VkInstance instance, VkDevice device, ImGui
|
|
|
ImGui_ImplVulkanH_DestroyFrame(device, &wd->Frames[i], allocator);
|
|
|
for (uint32_t i = 0; i < wd->SemaphoreCount; i++)
|
|
|
ImGui_ImplVulkanH_DestroyFrameSemaphores(device, &wd->FrameSemaphores[i], allocator);
|
|
|
- IM_FREE(wd->Frames);
|
|
|
- IM_FREE(wd->FrameSemaphores);
|
|
|
- wd->Frames = nullptr;
|
|
|
- wd->FrameSemaphores = nullptr;
|
|
|
+ wd->Frames.clear();
|
|
|
+ wd->FrameSemaphores.clear();
|
|
|
vkDestroyPipeline(device, wd->Pipeline, allocator);
|
|
|
vkDestroyRenderPass(device, wd->RenderPass, allocator);
|
|
|
vkDestroySwapchainKHR(device, wd->Swapchain, allocator);
|