2024-10-09 10:54:19 -06:00
|
|
|
#include "render.h"
|
2024-10-12 14:01:23 -06:00
|
|
|
#include "pipeline.h"
|
|
|
|
#include "vk_mem_alloc.h"
|
2024-10-09 14:31:30 -06:00
|
|
|
#include "vulkan/vk_enum_string_helper.h"
|
2024-10-09 10:54:19 -06:00
|
|
|
|
2024-10-09 14:31:30 -06:00
|
|
|
VkResult render_thread(GLFWwindow* window, RenderContext* render_context) {
|
2024-10-09 20:00:56 -06:00
|
|
|
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);
|
|
|
|
|
2024-10-12 14:01:23 -06:00
|
|
|
VmaAllocation ui_primitives_memory;
|
|
|
|
VkBuffer ui_primitives_buffer;
|
|
|
|
result = create_ui_polygon_buffer(render_context->device, render_context->transfer_queue, render_context->transfer_pool, render_context->allocator, &ui_primitives_memory, &ui_primitives_buffer);
|
|
|
|
if(result != VK_SUCCESS) {
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2024-10-09 10:54:19 -06:00
|
|
|
while(glfwWindowShouldClose(window) == 0) {
|
|
|
|
glfwPollEvents();
|
2024-10-09 14:31:30 -06:00
|
|
|
|
2024-10-12 14:01:23 -06:00
|
|
|
result = draw_frame(render_context, ui_primitives_buffer, test_ui_buffer, 3);
|
2024-10-09 14:31:30 -06:00
|
|
|
if(result != VK_SUCCESS) {
|
|
|
|
fprintf(stderr, "draw_frame error: %s\n", string_VkResult(result));
|
|
|
|
return result;
|
|
|
|
}
|
2024-10-09 10:54:19 -06:00
|
|
|
}
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2024-10-09 14:31:30 -06:00
|
|
|
if(render_thread(window, &render_context) != VK_SUCCESS) {
|
2024-10-09 10:54:19 -06:00
|
|
|
return 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|