Skip to content
Snippets Groups Projects
Verified Commit 4e217306 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

[#66] Moved resizing out of event because it is not synchronized yet (see #55)

parent c9a28a7a
No related branches found
No related tags found
1 merge request!54Resolve "Cmd/Sync-Rework"
Pipeline #25446 passed
...@@ -218,7 +218,7 @@ namespace vkcv ...@@ -218,7 +218,7 @@ namespace vkcv
/** /**
* @brief start recording command buffers and increment frame index * @brief start recording command buffers and increment frame index
*/ */
void beginFrame(); void beginFrame(uint32_t& width, uint32_t& height);
void recordDrawcallsToCmdStream( void recordDrawcallsToCmdStream(
const CommandStreamHandle cmdStreamHandle, const CommandStreamHandle cmdStreamHandle,
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
int main(int argc, const char** argv) { int main(int argc, const char** argv) {
const char* applicationName = "First Mesh"; const char* applicationName = "First Mesh";
const int windowWidth = 800; uint32_t windowWidth = 800;
const int windowHeight = 600; uint32_t windowHeight = 600;
vkcv::Window window = vkcv::Window::create( vkcv::Window window = vkcv::Window::create(
applicationName, applicationName,
windowWidth, windowWidth,
...@@ -138,10 +139,6 @@ int main(int argc, const char** argv) { ...@@ -138,10 +139,6 @@ int main(int argc, const char** argv) {
vkcv::ImageHandle depthBuffer = core.createImage(vk::Format::eD32Sfloat, windowWidth, windowHeight).getHandle(); vkcv::ImageHandle depthBuffer = core.createImage(vk::Format::eD32Sfloat, windowWidth, windowHeight).getHandle();
window.e_resize.add([&](int width, int height) {
depthBuffer = core.createImage(vk::Format::eD32Sfloat, width, height).getHandle();
});
const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle(); const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle();
const vkcv::DescriptorSetUsage descriptorUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle); const vkcv::DescriptorSetUsage descriptorUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle);
...@@ -164,8 +161,18 @@ int main(int argc, const char** argv) { ...@@ -164,8 +161,18 @@ int main(int argc, const char** argv) {
auto start = std::chrono::system_clock::now(); auto start = std::chrono::system_clock::now();
while (window.isWindowOpen()) { while (window.isWindowOpen()) {
window.pollEvents(); vkcv::Window::pollEvents();
core.beginFrame();
uint32_t swapchainWidth, swapchainHeight;
core.beginFrame(swapchainWidth, swapchainHeight);
if ((swapchainWidth != windowWidth) || ((swapchainHeight != windowHeight))) {
depthBuffer = core.createImage(vk::Format::eD32Sfloat, swapchainWidth, swapchainHeight).getHandle();
windowWidth = swapchainWidth;
windowHeight = swapchainHeight;
}
auto end = std::chrono::system_clock::now(); auto end = std::chrono::system_clock::now();
auto deltatime = end - start; auto deltatime = end - start;
start = end; start = end;
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
int main(int argc, const char** argv) { int main(int argc, const char** argv) {
const char* applicationName = "First Mesh"; const char* applicationName = "First Mesh";
const int windowWidth = 800; uint32_t windowWidth = 800;
const int windowHeight = 600; uint32_t windowHeight = 600;
vkcv::Window window = vkcv::Window::create( vkcv::Window window = vkcv::Window::create(
applicationName, applicationName,
...@@ -137,10 +137,6 @@ int main(int argc, const char** argv) { ...@@ -137,10 +137,6 @@ int main(int argc, const char** argv) {
vkcv::ImageHandle depthBuffer = core.createImage(vk::Format::eD32Sfloat, windowWidth, windowHeight).getHandle(); vkcv::ImageHandle depthBuffer = core.createImage(vk::Format::eD32Sfloat, windowWidth, windowHeight).getHandle();
window.e_resize.add([&](int width, int height) {
depthBuffer = core.createImage(vk::Format::eD32Sfloat, width, height).getHandle();
});
const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle(); const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle();
const vkcv::Mesh renderMesh(vertexBufferBindings, indexBuffer.getVulkanHandle(), mesh.vertexGroups[0].numIndices); const vkcv::Mesh renderMesh(vertexBufferBindings, indexBuffer.getVulkanHandle(), mesh.vertexGroups[0].numIndices);
...@@ -151,11 +147,20 @@ int main(int argc, const char** argv) { ...@@ -151,11 +147,20 @@ int main(int argc, const char** argv) {
auto start = std::chrono::system_clock::now(); auto start = std::chrono::system_clock::now();
while (window.isWindowOpen()) { while (window.isWindowOpen()) {
vkcv::Window::pollEvents(); vkcv::Window::pollEvents();
if(window.getHeight() == 0 || window.getWidth() == 0) if(window.getHeight() == 0 || window.getWidth() == 0)
continue; continue;
core.beginFrame(); uint32_t swapchainWidth, swapchainHeight;
core.beginFrame(swapchainWidth, swapchainHeight);
if ((swapchainWidth != windowWidth) || ((swapchainHeight != windowHeight))) {
depthBuffer = core.createImage(vk::Format::eD32Sfloat, swapchainWidth, swapchainHeight).getHandle();
windowWidth = swapchainWidth;
windowHeight = swapchainHeight;
}
auto end = std::chrono::system_clock::now(); auto end = std::chrono::system_clock::now();
auto deltatime = end - start; auto deltatime = end - start;
start = end; start = end;
......
...@@ -142,7 +142,10 @@ int main(int argc, const char** argv) { ...@@ -142,7 +142,10 @@ int main(int argc, const char** argv) {
while (window.isWindowOpen()) while (window.isWindowOpen())
{ {
window.pollEvents(); window.pollEvents();
core.beginFrame();
uint32_t swapchainWidth, swapchainHeight; // No resizing = No problem
core.beginFrame(swapchainWidth, swapchainHeight);
auto end = std::chrono::system_clock::now(); auto end = std::chrono::system_clock::now();
auto deltatime = end - start; auto deltatime = end - start;
start = end; start = end;
......
...@@ -127,7 +127,7 @@ namespace vkcv ...@@ -127,7 +127,7 @@ namespace vkcv
return Result::SUCCESS; return Result::SUCCESS;
} }
void Core::beginFrame() { void Core::beginFrame(uint32_t& width, uint32_t& height) {
if (m_swapchain.shouldUpdateSwapchain()) { if (m_swapchain.shouldUpdateSwapchain()) {
m_Context.getDevice().waitIdle(); m_Context.getDevice().waitIdle();
...@@ -149,6 +149,11 @@ namespace vkcv ...@@ -149,6 +149,11 @@ namespace vkcv
} }
m_Context.getDevice().waitIdle(); // TODO: this is a sin against graphics programming, but its getting late - Alex m_Context.getDevice().waitIdle(); // TODO: this is a sin against graphics programming, but its getting late - Alex
const auto& extent = m_swapchain.getExtent();
width = extent.width;
height = extent.height;
} }
void Core::recordDrawcallsToCmdStream( void Core::recordDrawcallsToCmdStream(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment