backup - missing some
[demo] / src / vulkan / uniforms-vk.cc
index 1c87a55..7e67a3a 100644 (file)
@@ -1,26 +1,50 @@
+#include <stdio.h>
+#include <string.h>
+
 #include "uniforms-vk.h"
 
 UniformBufferVK::UniformBufferVK()
 {
+       ubo = 0;
 }
 
 UniformBufferVK::~UniformBufferVK()
 {
+       destroy();
 }
 
 bool UniformBufferVK::create(int size)
 {
+       if(!(ubo = vku_create_buffer(size, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT))) {
+               fprintf(stderr, "Failed to create vulkan uniform buffer object.\n");
+               return false;
+       }
+
+       if(!UniformBuffer::create(size)) {
+               fprintf(stderr, "Failed to create uniform buffer object.\n");
+               return false;
+       }
        return true;
 }
 
 void UniformBufferVK::destroy()
 {
+       vku_destroy_buffer(ubo);
 }
 
 void UniformBufferVK::bind(int binding) const
 {
+       if(vkBindBufferMemory(vk_device, ubo->buf, ubo->mem_pool, 0) !=
+               VK_SUCCESS) {
+               fprintf(stderr, "Failed to bind ubo.\n");
+       }
 }
 
-void UniformBufferVK::update(void *data)
+bool UniformBufferVK::update(void *data)
 {
+       if(!vku_update_buffer(ubo, size, data)) {
+               fprintf(stderr, "Failed to update ubo.\n");
+               return false;
+       }
+       return true;
 }