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
This commit is part of merge request !54. Comments created here will be created in the context of that merge request.
......@@ -218,7 +218,7 @@ namespace vkcv
/**
* @brief start recording command buffers and increment frame index
*/
void beginFrame();
void beginFrame(uint32_t& width, uint32_t& height);
void recordDrawcallsToCmdStream(
const CommandStreamHandle cmdStreamHandle,
......
......@@ -8,8 +8,9 @@
int main(int argc, const char** argv) {
const char* applicationName = "First Mesh";
const int windowWidth = 800;
const int windowHeight = 600;
uint32_t windowWidth = 800;
uint32_t windowHeight = 600;
vkcv::Window window = vkcv::Window::create(
applicationName,
windowWidth,
......@@ -138,10 +139,6 @@ int main(int argc, const char** argv) {
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::DescriptorSetUsage descriptorUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle);
......@@ -164,8 +161,18 @@ int main(int argc, const char** argv) {
auto start = std::chrono::system_clock::now();
while (window.isWindowOpen()) {
window.pollEvents();
core.beginFrame();
vkcv::Window::pollEvents();
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 deltatime = end - start;
start = end;
......
......@@ -8,8 +8,8 @@
int main(int argc, const char** argv) {
const char* applicationName = "First Mesh";
const int windowWidth = 800;
const int windowHeight = 600;
uint32_t windowWidth = 800;
uint32_t windowHeight = 600;
vkcv::Window window = vkcv::Window::create(
applicationName,
......@@ -137,10 +137,6 @@ int main(int argc, const char** argv) {
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::Mesh renderMesh(vertexBufferBindings, indexBuffer.getVulkanHandle(), mesh.vertexGroups[0].numIndices);
......@@ -151,11 +147,20 @@ int main(int argc, const char** argv) {
auto start = std::chrono::system_clock::now();
while (window.isWindowOpen()) {
vkcv::Window::pollEvents();
if(window.getHeight() == 0 || window.getWidth() == 0)
continue;
core.beginFrame();
if(window.getHeight() == 0 || window.getWidth() == 0)
continue;
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 deltatime = end - start;
start = end;
......
......@@ -142,7 +142,10 @@ int main(int argc, const char** argv) {
while (window.isWindowOpen())
{
window.pollEvents();
core.beginFrame();
uint32_t swapchainWidth, swapchainHeight; // No resizing = No problem
core.beginFrame(swapchainWidth, swapchainHeight);
auto end = std::chrono::system_clock::now();
auto deltatime = end - start;
start = end;
......
......@@ -127,7 +127,7 @@ namespace vkcv
return Result::SUCCESS;
}
void Core::beginFrame() {
void Core::beginFrame(uint32_t& width, uint32_t& height) {
if (m_swapchain.shouldUpdateSwapchain()) {
m_Context.getDevice().waitIdle();
......@@ -149,6 +149,11 @@ namespace vkcv
}
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(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment