aboutsummaryrefslogtreecommitdiffstats
path: root/include/vk-renderer.hpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2022-09-08 23:04:06 +0200
committerladevieq <ladevie.quentin@gmail.com>2022-09-08 23:04:06 +0200
commit2d16fbd7e235bf2cc96d451469d8d39cae1917c3 (patch)
treeab565ca756c6341ec36f91835d548cfd989b6e1f /include/vk-renderer.hpp
parentb7c2511e588f1da63413a38a624fd3e6bb8cf54d (diff)
First render using new texture uploading system
Diffstat (limited to 'include/vk-renderer.hpp')
-rw-r--r--include/vk-renderer.hpp29
1 files changed, 18 insertions, 11 deletions
diff --git a/include/vk-renderer.hpp b/include/vk-renderer.hpp
index 63dcbf7..614569a 100644
--- a/include/vk-renderer.hpp
+++ b/include/vk-renderer.hpp
@@ -49,6 +49,10 @@ class vkrenderer {
void update_images();
+ void begin_frame();
+
+ void finish_frame();
+
static void queue_image_update(Texture* texture);
static Buffer* create_buffer(size_t size);
@@ -59,8 +63,6 @@ class vkrenderer {
static Texture* create_2d_texture(size_t width, size_t height, VkFormat format, Sampler *sampler = nullptr);
- static void destroy_2d_texture(Texture* texture);
-
static Sampler* create_sampler(VkFilter filter, VkSamplerAddressMode address_mode);
@@ -86,10 +88,6 @@ class vkrenderer {
private:
- void begin_frame();
-
- void finish_frame();
-
void handle_swapchain_result(VkResult function_result);
@@ -116,6 +114,7 @@ class vkrenderer {
VkSurfaceKHR platform_surface;
swapchain swapchain;
std::vector<Texture*> swapchain_textures;
+ std::vector<VkCommandBuffer> recorded_command_buffers;
const uint32_t min_swapchain_image_count = 3;
@@ -151,7 +150,7 @@ class RingBuffer {
handle device_buffer;
size_t buffer_size;
- off_t ptr;
+ off_t ptr = 0;
};
class Sampler {
@@ -164,7 +163,7 @@ class Texture {
public:
Texture(handle image_handle) {
- auto image = vkrenderer::api.get_image(image_handle);
+ const auto &image = vkrenderer::api.get_image(image_handle);
width = image.size.width;
height = image.size.height;
depth = image.size.depth;
@@ -188,11 +187,19 @@ class Texture {
}
data = new_data;
- // vkrenderer::update_image(this);
+ vkrenderer::queue_image_update(this);
+ }
+
+ ~Texture() {
+ vkrenderer::api.destroy_image(device_image);
+
+ if (data == nullptr) {
+ free(data);
+ }
}
- size_t size() const {
- auto image = vkrenderer::api.get_image(device_image);
+ [[nodiscard]]size_t size() const {
+ const auto& image = vkrenderer::api.get_image(device_image);
return width * height * depth * pixel_size(image.format);
}