+#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");
+ }
+}
+
+bool UniformBufferVK::update(void *data)
+{
+ if(!vku_update_buffer(ubo, size, data)) {
+ fprintf(stderr, "Failed to update ubo.\n");
+ return false;
+ }
+ return true;
}
-void UniformBufferVK::update(void *data)
+int UniformBufferVK::get_size()
{
+ return ubo->mem_size;
}