#include #include #include #define STB_IMAGE_IMPLEMENTATION 1 #include #include "core/core.h" #include "os/core.h" #include "vulkan/core.h" #include "game/core.h" int main(int argc, char **argv) { (void) argc; (void) argv; if (!SDL_Init(SDL_INIT_VIDEO)) { printf("[Error] :: Failed to initialise SDL3 (%s)\n", SDL_GetError()); return 1; } SDL_Window *window = SDL_CreateWindow("Ludum", 1280, 720, SDL_WINDOW_HIGH_PIXEL_DENSITY); if (!window) { printf("[Error] :: Failed to create window (%s)\n", SDL_GetError()); return 1; } Vk_Setup(window); M_Arena *garena = M_ArenaAlloc(GB(64), .initial = MB(4)); G_ImagesLoad(garena); bool running = true; while (running) { SDL_Event e; while (SDL_PollEvent(&e)) { if (e.type == SDL_EVENT_QUIT) { running = false; } } int w, h; SDL_GetWindowSizeInPixels(window, &w, &h); Vk_Frame *frame = Vk_FrameBegin(window); VkCommandBuffer cmd = frame->cmd; VkClearValue clear_colour; clear_colour.color.float32[0] = 1.0f; clear_colour.color.float32[1] = 0.0f; clear_colour.color.float32[2] = 0.0f; clear_colour.color.float32[3] = 1.0f; VkRenderingAttachmentInfo colour_attachment = { 0 }; colour_attachment.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO; colour_attachment.imageView = vk.swapchain.views[frame->image]; colour_attachment.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; colour_attachment.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; colour_attachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE; colour_attachment.clearValue = clear_colour; VkRenderingInfo rendering_info = { 0 }; rendering_info.sType = VK_STRUCTURE_TYPE_RENDERING_INFO; rendering_info.renderArea = (VkRect2D) { 0, 0, w, h }; rendering_info.layerCount = 1; rendering_info.colorAttachmentCount = 1; rendering_info.pColorAttachments = &colour_attachment; vk.CmdBeginRendering(cmd, &rendering_info); vk.CmdEndRendering(cmd); Vk_FrameEnd(); } SDL_DestroyWindow(window); SDL_Quit(); return 0; } #include "core/core.c" #include "os/core.c" #include "vulkan/core.c" #include "game/core.c"