Create synchronization objects
This commit is contained in:
parent
d30b37bfbd
commit
ebe78cb4ca
@ -27,6 +27,9 @@ namespace nf::client::render {
|
||||
, m_pipelineOutput()
|
||||
, m_commandPool()
|
||||
, m_commandBuffer()
|
||||
, m_semaphoreImageAvailable()
|
||||
, m_semaphoreRenderFinished()
|
||||
, m_fenceInFlight()
|
||||
{
|
||||
NFLog("Initializing render engine");
|
||||
m_window->setDisplay(m_display);
|
||||
@ -39,6 +42,7 @@ namespace nf::client::render {
|
||||
createOutputRenderPass();
|
||||
createOutputPipeline();
|
||||
createCommandBuffer();
|
||||
createSynchronizationObjects();
|
||||
|
||||
m_window->show();
|
||||
}
|
||||
@ -396,7 +400,22 @@ namespace nf::client::render {
|
||||
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() {
|
||||
vkDestroyFence(m_device, m_fenceInFlight, nullptr);
|
||||
vkDestroySemaphore(m_device, m_semaphoreRenderFinished, nullptr);
|
||||
vkDestroySemaphore(m_device, m_semaphoreImageAvailable, nullptr);
|
||||
|
||||
vkDestroyCommandPool(m_device, m_commandPool, nullptr);
|
||||
|
||||
for (int i = 0; i < m_swapchainFramebuffers.size(); i++)
|
||||
|
@ -19,6 +19,7 @@ namespace nf::client::render {
|
||||
void createOutputRenderPass();
|
||||
void createOutputPipeline();
|
||||
void createCommandBuffer();
|
||||
void createSynchronizationObjects();
|
||||
|
||||
std::shared_ptr<Window> m_window;
|
||||
DisplayConfig m_display;
|
||||
@ -46,5 +47,10 @@ namespace nf::client::render {
|
||||
// Command buffers
|
||||
VkCommandPool m_commandPool;
|
||||
VkCommandBuffer m_commandBuffer;
|
||||
|
||||
// Synchronization objects
|
||||
VkSemaphore m_semaphoreImageAvailable;
|
||||
VkSemaphore m_semaphoreRenderFinished;
|
||||
VkFence m_fenceInFlight;
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user