mirror of
https://github.com/bailwillharr/engine.git
synced 2024-09-21 04:51:18 +00:00
Start adding depth buffer
This commit is contained in:
parent
81031c9c10
commit
a9b0918235
@ -71,7 +71,6 @@ namespace engine {
|
||||
|
||||
m_swapchain = std::make_unique<Swapchain>(device); // owns the device
|
||||
|
||||
INFO("Instance use count: {}", instance.use_count());
|
||||
}
|
||||
|
||||
private:
|
||||
@ -565,6 +564,27 @@ namespace engine {
|
||||
vkGetDeviceQueue(m_handle, q.familyIndex, q.queueIndex, &q.handle);
|
||||
}
|
||||
|
||||
Queue gfxQueue = getGraphicsQueue();
|
||||
|
||||
VkCommandPoolCreateInfo gfxCmdPoolInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
|
||||
.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,
|
||||
.queueFamilyIndex = gfxQueue.familyIndex,
|
||||
};
|
||||
|
||||
res = vkCreateCommandPool(m_handle, &gfxCmdPoolInfo, nullptr, &m_gfxCommandPool);
|
||||
assert(res == VK_SUCCESS);
|
||||
|
||||
VkCommandBufferAllocateInfo gfxCmdBufInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
|
||||
.commandPool = m_gfxCommandPool,
|
||||
.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
|
||||
.commandBufferCount = 1
|
||||
};
|
||||
|
||||
res = vkAllocateCommandBuffers(m_handle, &gfxCmdBufInfo, &m_gfxCommandBuffer);
|
||||
assert(res == VK_SUCCESS);
|
||||
|
||||
}
|
||||
Device(const Device&) = delete;
|
||||
Device& operator=(const Device&) = delete;
|
||||
@ -572,6 +592,7 @@ namespace engine {
|
||||
~Device()
|
||||
{
|
||||
TRACE("Destroying device...");
|
||||
vkDestroyCommandPool(m_handle, m_gfxCommandPool, nullptr);
|
||||
vkDestroyDevice(m_handle, nullptr);
|
||||
}
|
||||
|
||||
@ -601,6 +622,16 @@ namespace engine {
|
||||
VkQueue handle;
|
||||
};
|
||||
|
||||
VkCommandBuffer getGraphicsCommandBuffer()
|
||||
{
|
||||
return m_gfxCommandBuffer;
|
||||
}
|
||||
|
||||
std::shared_ptr<Surface> getSurface()
|
||||
{
|
||||
return m_surface;
|
||||
}
|
||||
|
||||
Queue getGraphicsQueue()
|
||||
{
|
||||
for (const auto& queue : m_queues) {
|
||||
@ -617,18 +648,13 @@ namespace engine {
|
||||
throw std::runtime_error("Unable to find transfer queue");
|
||||
}
|
||||
|
||||
Queue getComputeQueue()
|
||||
/*Queue getComputeQueue()
|
||||
{
|
||||
for (const auto& queue : m_queues) {
|
||||
if (queue.supportsCompute) return queue;
|
||||
}
|
||||
throw std::runtime_error("Unable to find compute queue");
|
||||
}
|
||||
|
||||
std::shared_ptr<Surface> getSurface()
|
||||
{
|
||||
return m_surface;
|
||||
}
|
||||
}*/
|
||||
|
||||
private:
|
||||
std::shared_ptr<Surface> m_surface;
|
||||
@ -639,10 +665,15 @@ namespace engine {
|
||||
|
||||
std::vector<Queue> m_queues{};
|
||||
|
||||
VkCommandPool m_gfxCommandPool = VK_NULL_HANDLE;
|
||||
VkCommandBuffer m_gfxCommandBuffer = VK_NULL_HANDLE;
|
||||
|
||||
};
|
||||
|
||||
class Swapchain {
|
||||
|
||||
// this class also creates a depth buffer image
|
||||
|
||||
public:
|
||||
Swapchain(std::shared_ptr<Device> device) : m_device(device)
|
||||
{
|
||||
@ -765,6 +796,24 @@ namespace engine {
|
||||
assert (res == VK_SUCCESS);
|
||||
|
||||
m_imageViews.push_back(imageView);
|
||||
|
||||
// create depth buffer
|
||||
|
||||
VkImageCreateInfo depthImageInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
|
||||
.flags = 0,
|
||||
.imageType = VK_IMAGE_TYPE_2D,
|
||||
.format = VK_FORMAT_D16_UNORM,
|
||||
.extent = {
|
||||
.width = chosenSwapExtent.width,
|
||||
.height = chosenSwapExtent.height,
|
||||
.depth = 1,
|
||||
},
|
||||
.mipLevels = 1,
|
||||
.arrayLayers = 1,
|
||||
.samples =
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -794,6 +843,7 @@ namespace engine {
|
||||
};
|
||||
|
||||
|
||||
|
||||
std::unique_ptr<DebugMessenger> m_debugMessenger; // uses instance
|
||||
std::unique_ptr<Swapchain> m_swapchain;
|
||||
|
||||
@ -824,7 +874,7 @@ namespace engine {
|
||||
|
||||
void GFXDevice::draw()
|
||||
{
|
||||
TRACE("Drawing");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user