#include "render.h" #include "vulkan/vk_enum_string_helper.h" VkResult render_thread(GLFWwindow* window, RenderContext* render_context) { VkBuffer test_ui_buffer; VmaAllocation test_ui_memory; VkBufferCreateInfo test_ui_buffer_info = { .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, .usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, .size = 3*sizeof(struct UIElement), .sharingMode = VK_SHARING_MODE_EXCLUSIVE, }; VmaAllocationCreateInfo test_ui_memory_info = { .usage = VMA_MEMORY_USAGE_CPU_TO_GPU, }; VkResult result = vmaCreateBuffer(render_context->allocator, &test_ui_buffer_info, &test_ui_memory_info, &test_ui_buffer, &test_ui_memory, NULL); if(result != VK_SUCCESS) { return result; } struct UIElement* mapped; result = vmaMapMemory(render_context->allocator, test_ui_memory, (void**)&mapped); if(result != VK_SUCCESS) { return result; } mapped[0].size[0] = 0.5; mapped[0].size[1] = 0.5; mapped[0].color[0] = 1.0; mapped[0].color[1] = 0.0; mapped[0].color[2] = 0.0; mapped[0].color[3] = 1.0; mapped[0].pos[0] = 0.0; mapped[0].pos[1] = 0.0; mapped[0].pos[2] = 0.5; mapped[1].size[0] = 0.5; mapped[1].size[1] = 0.5; mapped[1].color[0] = 0.0; mapped[1].color[1] = 1.0; mapped[1].color[2] = 0.0; mapped[1].color[3] = 1.0; mapped[1].pos[0] = 0.5; mapped[1].pos[1] = 0.0; mapped[1].pos[2] = 0.5; mapped[2].size[0] = 0.5; mapped[2].size[1] = 0.5; mapped[2].color[0] = 0.0; mapped[2].color[1] = 0.0; mapped[2].color[2] = 1.0; mapped[2].color[3] = 1.0; mapped[2].pos[0] = 0.0; mapped[2].pos[1] = 0.5; mapped[2].pos[2] = 0.5; vmaUnmapMemory(render_context->allocator, test_ui_memory); while(glfwWindowShouldClose(window) == 0) { glfwPollEvents(); result = draw_frame(render_context, test_ui_buffer, 3); if(result != VK_SUCCESS) { fprintf(stderr, "draw_frame error: %s\n", string_VkResult(result)); return result; } } return 0; } int logic_thread() { return 0; } int network_thread() { return 0; } int main() { GLFWwindow* window = init_window(); if(window == NULL) { return 1; } RenderContext render_context = {}; if(init_vulkan(window, &render_context) != VK_SUCCESS) { return 2; } if(render_thread(window, &render_context) != VK_SUCCESS) { return 3; } return 0; }