moving files to better dirs
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#include "resources/render_target.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace sophia {
|
||||
|
||||
RenderTarget::RenderTarget(Device& device, vk::Format format, u32 width,
|
||||
u32 height)
|
||||
: device{device}, format{format} {
|
||||
create(std::max(width, 1u), std::max(height, 1u));
|
||||
}
|
||||
|
||||
RenderTarget::~RenderTarget() { destroy(); }
|
||||
|
||||
vk::Extent2D RenderTarget::getExtent() const {
|
||||
vk::Extent3D extent = this->image->getExtent();
|
||||
return {extent.width, extent.height};
|
||||
}
|
||||
|
||||
void RenderTarget::requestResize(u32 width, u32 height) {
|
||||
this->pendingExtent = vk::Extent2D{std::max(width, 1u), std::max(height, 1u)};
|
||||
}
|
||||
|
||||
void RenderTarget::applyPendingResize() {
|
||||
if (!this->pendingExtent) {
|
||||
return;
|
||||
}
|
||||
|
||||
vk::Extent2D extent = *this->pendingExtent;
|
||||
this->pendingExtent.reset();
|
||||
if (extent == getExtent()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Earlier frames may still be sampling the old image (e.g. through the UI).
|
||||
this->device.waitIdle();
|
||||
destroy();
|
||||
create(extent.width, extent.height);
|
||||
}
|
||||
|
||||
void RenderTarget::create(u32 width, u32 height) {
|
||||
this->image = Image::Builder(this->device)
|
||||
.setExtent(width, height)
|
||||
.setFormat(this->format)
|
||||
.asColorAttachment()
|
||||
.withView()
|
||||
.build();
|
||||
}
|
||||
|
||||
void RenderTarget::destroy() { this->image.reset(); }
|
||||
|
||||
} // namespace sophia
|
||||
Reference in New Issue
Block a user