some descriptor functions in vkutil - wip
[demo] / src / vulkan / uniforms-vk.cc
index 1c87a55..6a02110 100644 (file)
@@ -1,7 +1,11 @@
+#include <stdio.h>
+#include <string.h>
+
 #include "uniforms-vk.h"
 
 UniformBufferVK::UniformBufferVK()
 {
+       ubo = 0;
 }
 
 UniformBufferVK::~UniformBufferVK()
@@ -10,17 +14,32 @@ UniformBufferVK::~UniformBufferVK()
 
 bool UniformBufferVK::create(int size)
 {
-       return true;
+       if(!(ubo = vku_create_buffer(size, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT))) {
+               fprintf(stderr, "Failed to create uniform buffer object.\n");
+               return false;
+       }
+
+       return UniformBuffer::create(size);
 }
 
 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;
 }