Create synchronization objects
This commit is contained in:
parent
d30b37bfbd
commit
ebe78cb4ca
@ -27,6 +27,9 @@ namespace nf::client::render {
|
|||||||
, m_pipelineOutput()
|
, m_pipelineOutput()
|
||||||
, m_commandPool()
|
, m_commandPool()
|
||||||
, m_commandBuffer()
|
, m_commandBuffer()
|
||||||
|
, m_semaphoreImageAvailable()
|
||||||
|
, m_semaphoreRenderFinished()
|
||||||
|
, m_fenceInFlight()
|
||||||
{
|
{
|
||||||
NFLog("Initializing render engine");
|
NFLog("Initializing render engine");
|
||||||
m_window->setDisplay(m_display);
|
m_window->setDisplay(m_display);
|
||||||
@ -39,6 +42,7 @@ namespace nf::client::render {
|
|||||||
createOutputRenderPass();
|
createOutputRenderPass();
|
||||||
createOutputPipeline();
|
createOutputPipeline();
|
||||||
createCommandBuffer();
|
createCommandBuffer();
|
||||||
|
createSynchronizationObjects();
|
||||||
|
|
||||||
m_window->show();
|
m_window->show();
|
||||||
}
|
}
|
||||||
@ -396,7 +400,22 @@ namespace nf::client::render {
|
|||||||
NFError("Could not create command buffer.");
|
NFError("Could not create command buffer.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RenderEngine::createSynchronizationObjects() {
|
||||||
|
VkSemaphoreCreateInfo semaphoreCI = { VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO };
|
||||||
|
if (vkCreateSemaphore(m_device, &semaphoreCI, nullptr, &m_semaphoreImageAvailable) != VK_SUCCESS ||
|
||||||
|
vkCreateSemaphore(m_device, &semaphoreCI, nullptr, &m_semaphoreRenderFinished) != VK_SUCCESS)
|
||||||
|
NFError("Could not create semaphore.");
|
||||||
|
|
||||||
|
VkFenceCreateInfo fenceCI = { VK_STRUCTURE_TYPE_FENCE_CREATE_INFO };
|
||||||
|
if (vkCreateFence(m_device, &fenceCI, nullptr, &m_fenceInFlight) != VK_SUCCESS)
|
||||||
|
NFError("Could not create fence.");
|
||||||
|
}
|
||||||
|
|
||||||
RenderEngine::~RenderEngine() {
|
RenderEngine::~RenderEngine() {
|
||||||
|
vkDestroyFence(m_device, m_fenceInFlight, nullptr);
|
||||||
|
vkDestroySemaphore(m_device, m_semaphoreRenderFinished, nullptr);
|
||||||
|
vkDestroySemaphore(m_device, m_semaphoreImageAvailable, nullptr);
|
||||||
|
|
||||||
vkDestroyCommandPool(m_device, m_commandPool, nullptr);
|
vkDestroyCommandPool(m_device, m_commandPool, nullptr);
|
||||||
|
|
||||||
for (int i = 0; i < m_swapchainFramebuffers.size(); i++)
|
for (int i = 0; i < m_swapchainFramebuffers.size(); i++)
|
||||||
|
@ -19,6 +19,7 @@ namespace nf::client::render {
|
|||||||
void createOutputRenderPass();
|
void createOutputRenderPass();
|
||||||
void createOutputPipeline();
|
void createOutputPipeline();
|
||||||
void createCommandBuffer();
|
void createCommandBuffer();
|
||||||
|
void createSynchronizationObjects();
|
||||||
|
|
||||||
std::shared_ptr<Window> m_window;
|
std::shared_ptr<Window> m_window;
|
||||||
DisplayConfig m_display;
|
DisplayConfig m_display;
|
||||||
@ -46,5 +47,10 @@ namespace nf::client::render {
|
|||||||
// Command buffers
|
// Command buffers
|
||||||
VkCommandPool m_commandPool;
|
VkCommandPool m_commandPool;
|
||||||
VkCommandBuffer m_commandBuffer;
|
VkCommandBuffer m_commandBuffer;
|
||||||
|
|
||||||
|
// Synchronization objects
|
||||||
|
VkSemaphore m_semaphoreImageAvailable;
|
||||||
|
VkSemaphore m_semaphoreRenderFinished;
|
||||||
|
VkFence m_fenceInFlight;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user