87 lines
2.8 KiB
C
87 lines
2.8 KiB
C
#include "rse_graphics.h"
|
|
#include "window.h"
|
|
#include "vulkan_base.h"
|
|
|
|
#include "mesh_controller.h"
|
|
#include "vulkan_commons.h"
|
|
|
|
#include "rse_math.h"
|
|
|
|
extern struct rse_vulkan_state_t g_vulkan_state;
|
|
|
|
void rse_graphics_init(void)
|
|
{
|
|
// g_vulkan_state = malloc(sizeof(struct rse_vulkan_state_t));
|
|
g_vulkan_state.graphics_queue = VK_NULL_HANDLE;
|
|
g_vulkan_state.physical_device = VK_NULL_HANDLE;
|
|
g_vulkan_state.current_frame = 0U;
|
|
// vulkan_state->queueFamilyIndices = {0U}; /* TODO: Change when more families are needed */
|
|
// g_vulkan_state->uniformBuffers = {};
|
|
// g_vulkan_state->pCommandBuffers = {};
|
|
// g_vulkan_state->descriptorSets = {};
|
|
// g_vulkan_state->swapChainImageViews = {}; TODO: Allocate later
|
|
// g_vulkan_state->swapchainExtent = {}; TODO: Allocate later
|
|
g_vulkan_state.render_pass = VK_NULL_HANDLE;
|
|
g_vulkan_state.descriptor_set_layout = VK_NULL_HANDLE;
|
|
// g_vulkan_state->swapchainFramebuffers = {}; TODO: Allocate later
|
|
g_vulkan_state.graphics_pipeline = VK_NULL_HANDLE;
|
|
g_vulkan_state.pipeline_layout = VK_NULL_HANDLE;
|
|
g_vulkan_state.swapchain = VK_NULL_HANDLE;
|
|
}
|
|
|
|
void rse_graphics_deinit()
|
|
{
|
|
// free(g_vulkan_state);
|
|
}
|
|
|
|
|
|
uint8_t rse_graphics_run(void)
|
|
{
|
|
window_init();
|
|
|
|
if (0 != init_vulkan())
|
|
return -1;
|
|
|
|
// FIXME: Temporary array of vertices, for testing purposes
|
|
struct rse_vertex_t vertices[] = {{{-0.5f, -0.5f, 0.0f}, {1.0f, 0.0f, 1.0f}},
|
|
{{0.5f, -0.5f, 0.0f}, {0.0f, 1.0f, 1.0f}},
|
|
{{0.5f, 0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}},
|
|
{{-0.5f, 0.5f, 0.0f}, {1.0f, 0.0f, 1.0f}}};
|
|
struct rse_vertex_t vertices2[] = {{{-0.5f, -0.5f, 0.0f}, {1.0f, 0.0f, 1.0f}},
|
|
|
|
{{0.5f, -0.5f, 0.0f}, {0.0f, 1.0f, 0.0f}},
|
|
{{0.5f, 0.5f, 0.0f}, {0.0f, 1.0f, 0.0f}},
|
|
{{-0.5f, 0.5f, 0.0f}, {1.0f, 1.0f, 0.0f}}};
|
|
|
|
// FIXME: Temporary array of vertices, for testing purposes
|
|
uint16_t indices[] = {0, 1, 2, 2, 3, 0};
|
|
|
|
uint16_t mesh_id = create_mesh(vertices, indices, 24, 6);
|
|
create_mesh_instance(mesh_id, (struct rse_instance_data_t){
|
|
{0.0f, 0.0f, 0.0f},
|
|
{0.0f, 0.0f, rse_math_deg_to_radians(45.0f)},
|
|
1.0f
|
|
});
|
|
|
|
create_mesh_instance(mesh_id, (struct rse_instance_data_t){
|
|
{-1.0f, 0.0f, 0.0f},
|
|
{0.0f, 0.0f, 0.0f},
|
|
1.0f
|
|
});
|
|
|
|
mesh_id = create_mesh(vertices, indices, 24, 6);
|
|
create_mesh_instance(mesh_id, (struct rse_instance_data_t){
|
|
{0.0f, 1.0f, 0.0f},
|
|
{0.0f, 0.0f, rse_math_deg_to_radians(0.0f)},
|
|
1.0f
|
|
});
|
|
|
|
window_loop();
|
|
|
|
deinit_vulkan();
|
|
|
|
window_terminate();
|
|
|
|
return 0;
|
|
}
|