Added ImGUI into the render loop, not tested atm
This commit is contained in:
parent
78b5577ff2
commit
76947a59ee
1
.clangd
1
.clangd
@ -6,6 +6,7 @@ CompileFlags:
|
|||||||
- -DINITIALIZERS_IMPL
|
- -DINITIALIZERS_IMPL
|
||||||
- -DPIPELINES_IMPL
|
- -DPIPELINES_IMPL
|
||||||
- -DDESCRIPTORS_IMPL
|
- -DDESCRIPTORS_IMPL
|
||||||
|
- -DCALLBACK_IMPL
|
||||||
- -DTIMER_IMPL
|
- -DTIMER_IMPL
|
||||||
- -DLOGGER_IMPL
|
- -DLOGGER_IMPL
|
||||||
- -DSERVER_INIT_IMPL
|
- -DSERVER_INIT_IMPL
|
||||||
|
|||||||
@ -109,10 +109,15 @@ class Engine {
|
|||||||
uint32_t width,
|
uint32_t width,
|
||||||
uint32_t height
|
uint32_t height
|
||||||
);
|
);
|
||||||
|
void buildImgui();
|
||||||
void destroySwapchain();
|
void destroySwapchain();
|
||||||
void drawBackground(
|
void drawBackground(
|
||||||
VkCommandBuffer cmd
|
VkCommandBuffer cmd
|
||||||
);
|
);
|
||||||
|
void drawImgui(
|
||||||
|
VkCommandBuffer cmd,
|
||||||
|
VkImageView targetImageView
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -325,6 +330,19 @@ void Engine::draw() {
|
|||||||
_swapchainExtent
|
_swapchainExtent
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Set the swapchain image layout to Attachment Optimal so ImGui can write on top of it
|
||||||
|
vkutil::transitionImage(
|
||||||
|
cmd,
|
||||||
|
_swapchainImages[swapchainImageIndex],
|
||||||
|
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||||
|
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||||
|
);
|
||||||
|
|
||||||
|
drawImgui(
|
||||||
|
cmd,
|
||||||
|
_swapchainImageViews[swapchainImageIndex]
|
||||||
|
);
|
||||||
|
|
||||||
// Uses the present layout to display into the screen
|
// Uses the present layout to display into the screen
|
||||||
vkutil::transitionImage(
|
vkutil::transitionImage(
|
||||||
cmd,
|
cmd,
|
||||||
@ -384,6 +402,7 @@ void Engine::run() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buildImgui();
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -890,7 +909,7 @@ void Engine::initImgui() {
|
|||||||
.PipelineRenderingCreateInfo {
|
.PipelineRenderingCreateInfo {
|
||||||
.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR,
|
.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR,
|
||||||
.colorAttachmentCount = 1,
|
.colorAttachmentCount = 1,
|
||||||
.pColorAttachmentFormats = &_swapchainImageFormat
|
.pColorAttachmentFormats = &_drawImage.imageFormat
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
.UseDynamicRendering = true
|
.UseDynamicRendering = true
|
||||||
@ -955,6 +974,19 @@ void Engine::createSwapchain(
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Engine::buildImgui() {
|
||||||
|
// New frames
|
||||||
|
ImGui_ImplVulkan_NewFrame();
|
||||||
|
ImGui_ImplGlfw_NewFrame();
|
||||||
|
ImGui::NewFrame();
|
||||||
|
|
||||||
|
// Main ImGui things
|
||||||
|
ImGui::ShowDemoWindow();
|
||||||
|
|
||||||
|
// Finish everything
|
||||||
|
ImGui::Render();
|
||||||
|
}
|
||||||
|
|
||||||
void Engine::destroySwapchain() {
|
void Engine::destroySwapchain() {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fmt::println("[Engine:Cleanup] Destroying the swapchain...");
|
fmt::println("[Engine:Cleanup] Destroying the swapchain...");
|
||||||
@ -1011,6 +1043,38 @@ void Engine::drawBackground(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Engine::drawImgui(
|
||||||
|
VkCommandBuffer cmd,
|
||||||
|
VkImageView targetImageView
|
||||||
|
) {
|
||||||
|
VkRenderingAttachmentInfo colorAttachment {
|
||||||
|
vkinit::attachmentInfo(
|
||||||
|
targetImageView,
|
||||||
|
nullptr,
|
||||||
|
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||||
|
)
|
||||||
|
};
|
||||||
|
VkRenderingInfo renderInfo {
|
||||||
|
vkinit::renderingInfo(
|
||||||
|
_swapchainExtent,
|
||||||
|
&colorAttachment,
|
||||||
|
nullptr
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
vkCmdBeginRendering(
|
||||||
|
cmd,
|
||||||
|
&renderInfo
|
||||||
|
);
|
||||||
|
|
||||||
|
ImGui_ImplVulkan_RenderDrawData(
|
||||||
|
ImGui::GetDrawData(),
|
||||||
|
cmd
|
||||||
|
);
|
||||||
|
|
||||||
|
vkCmdEndRendering(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
void Engine::immediateSubmit(
|
void Engine::immediateSubmit(
|
||||||
std::function<
|
std::function<
|
||||||
void(VkCommandBuffer cmd)
|
void(VkCommandBuffer cmd)
|
||||||
@ -1080,5 +1144,7 @@ void Engine::immediateSubmit(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#define INITIALIZERS_H
|
#define INITIALIZERS_H
|
||||||
// Normal header
|
// Normal header
|
||||||
#include "Common/Types.h"
|
#include "Common/Types.h"
|
||||||
|
#include <vulkan/vulkan_core.h>
|
||||||
|
|
||||||
namespace vkinit {
|
namespace vkinit {
|
||||||
VkCommandPoolCreateInfo commandPoolCreateInfo(
|
VkCommandPoolCreateInfo commandPoolCreateInfo(
|
||||||
@ -57,6 +58,17 @@ namespace vkinit {
|
|||||||
VkImageAspectFlags aspectFlags
|
VkImageAspectFlags aspectFlags
|
||||||
);
|
);
|
||||||
|
|
||||||
|
VkRenderingAttachmentInfo attachmentInfo(
|
||||||
|
VkImageView view,
|
||||||
|
VkClearValue* clear,
|
||||||
|
VkImageLayout layout /*= VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL*/
|
||||||
|
);
|
||||||
|
|
||||||
|
VkRenderingInfo renderingInfo(
|
||||||
|
VkExtent2D renderExtent,
|
||||||
|
VkRenderingAttachmentInfo* colorAttachment,
|
||||||
|
VkRenderingAttachmentInfo* depthAttachment
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -242,6 +254,52 @@ namespace vkinit {
|
|||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VkRenderingAttachmentInfo attachmentInfo(
|
||||||
|
VkImageView view,
|
||||||
|
VkClearValue* clear,
|
||||||
|
VkImageLayout layout /*= VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL*/
|
||||||
|
) {
|
||||||
|
VkRenderingAttachmentInfo colorAttachment {
|
||||||
|
.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
|
||||||
|
.pNext = nullptr,
|
||||||
|
.imageView = view,
|
||||||
|
.imageLayout = layout,
|
||||||
|
.loadOp = clear ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_LOAD,
|
||||||
|
.storeOp = VK_ATTACHMENT_STORE_OP_STORE
|
||||||
|
};
|
||||||
|
|
||||||
|
if (clear) {
|
||||||
|
colorAttachment.clearValue = *clear;
|
||||||
|
}
|
||||||
|
|
||||||
|
return colorAttachment;
|
||||||
|
}
|
||||||
|
|
||||||
|
VkRenderingInfo renderingInfo(
|
||||||
|
VkExtent2D renderExtent,
|
||||||
|
VkRenderingAttachmentInfo* colorAttachment,
|
||||||
|
VkRenderingAttachmentInfo* depthAttachment
|
||||||
|
) {
|
||||||
|
VkRenderingInfo renderInfo {
|
||||||
|
.sType = VK_STRUCTURE_TYPE_RENDERING_INFO,
|
||||||
|
.pNext = nullptr,
|
||||||
|
.renderArea = VkRect2D {
|
||||||
|
VkOffset2D {
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
}, renderExtent
|
||||||
|
},
|
||||||
|
.layerCount = 1,
|
||||||
|
.colorAttachmentCount = 1,
|
||||||
|
.pColorAttachments = colorAttachment,
|
||||||
|
.pDepthAttachment = depthAttachment,
|
||||||
|
.pStencilAttachment = nullptr
|
||||||
|
};
|
||||||
|
return renderInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user