From 7b3afcaf77f96e7d62f6cd1623ead7f17512d79f Mon Sep 17 00:00:00 2001 From: Omniscient <17525998+omnisci3nce@users.noreply.github.com> Date: Sat, 24 Feb 2024 22:47:46 +1100 Subject: repo init. partial port of existing code --- src/renderer/backends/backend_opengl.c | 62 ++++++++++++++++++++++++++++++++++ src/renderer/backends/backend_test.c | 1 + src/renderer/backends/backend_vulkan.c | 1 + 3 files changed, 64 insertions(+) create mode 100644 src/renderer/backends/backend_opengl.c create mode 100644 src/renderer/backends/backend_test.c create mode 100644 src/renderer/backends/backend_vulkan.c (limited to 'src/renderer/backends') diff --git a/src/renderer/backends/backend_opengl.c b/src/renderer/backends/backend_opengl.c new file mode 100644 index 0000000..ed2c70f --- /dev/null +++ b/src/renderer/backends/backend_opengl.c @@ -0,0 +1,62 @@ +#include +#define CEL_PLATFORM_LINUX + +#include "defines.h" +#include "log.h" +#include "maths_types.h" +#include "render_types.h" + +#if CEL_REND_BACKEND_OPENGL + +#include + +#include + +/** @brief Internal backend state */ +typedef struct opengl_state { +} opengl_state; + +bool gfx_backend_init(renderer *ren) { + INFO("loading OpenGL backend"); + + // glfwInit(); // Already handled in `renderer_init` + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); + + // glad: load all OpenGL function pointers + if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { + ERROR("Failed to initialise GLAD \n"); + + return false; + } + + glEnable(GL_DEPTH_TEST); + + opengl_state *internal = malloc(sizeof(opengl_state)); + ren->backend_state = (void *)internal; + + return true; +} +void gfx_backend_shutdown(renderer *ren) {} + +void uniform_vec3f(u32 program_id, const char *uniform_name, vec3 *value) { + glUniform3fv(glGetUniformLocation(program_id, uniform_name), 1, &value->x); +} +void uniform_f32(u32 program_id, const char *uniform_name, f32 value) { + glUniform1f(glGetUniformLocation(program_id, uniform_name), value); +} +void uniform_i32(u32 program_id, const char *uniform_name, i32 value) { + glUniform1i(glGetUniformLocation(program_id, uniform_name), value); +} +void uniform_mat4f(u32 program_id, const char *uniform_name, mat4 *value) { + glUniformMatrix4fv(glGetUniformLocation(program_id, uniform_name), 1, GL_FALSE, value->data); +} + +void clear_screen(vec3 colour) { + glClearColor(colour.x, colour.y, colour.z, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + +#endif \ No newline at end of file diff --git a/src/renderer/backends/backend_test.c b/src/renderer/backends/backend_test.c new file mode 100644 index 0000000..6347e27 --- /dev/null +++ b/src/renderer/backends/backend_test.c @@ -0,0 +1 @@ +// #FUTURE \ No newline at end of file diff --git a/src/renderer/backends/backend_vulkan.c b/src/renderer/backends/backend_vulkan.c new file mode 100644 index 0000000..6347e27 --- /dev/null +++ b/src/renderer/backends/backend_vulkan.c @@ -0,0 +1 @@ +// #FUTURE \ No newline at end of file -- cgit v1.2.3-70-g09d2