diff --git a/main/main.c b/main/main.c index effccfc..ed1f3b8 100644 --- a/main/main.c +++ b/main/main.c @@ -1,156 +1,28 @@ #include #include #include - -#define SKR_BACKEND_API 0 // opengl -#define SKR_BACKEND_WINDOW 0 // glfw #include -SkrCamera* g_skr_camera = SkrDefaultFPSCamera; - int main(void) { - SkrState state = SkrInit(&(SkrWindow){ - .Title = "Hello SKR", - .Width = 800, - .Height = 600, - }); + SkrState state = SkrInit( + &(SkrWindow){ + .Title = "Hello SKR", + .Width = 800, + .Height = 600, + }, + SKR_BACKEND_API_GL); glewInit(); - vec3 cubePositions[] = {{0.0f, 0.0f, 0.0f}, {2.0f, 5.0f, -15.0f}, - {-1.5f, -2.2f, -2.5f}, {-3.8f, -2.0f, -12.3f}, - {2.4f, -0.4f, -3.5f}, {-1.7f, 3.0f, -7.5f}, - {1.3f, -2.0f, -2.5f}, {1.5f, 2.0f, -2.5f}, - {1.5f, 0.2f, -1.5f}, {-1.3f, 1.0f, -1.5f}}; + SkrRendererInit(&state); - glEnable(GL_DEPTH_TEST); - -#include
-#include
- - SkrShader shaders[2] = { - {.Type = GL_VERTEX_SHADER, .Source = camera_vert}, - {.Type = GL_FRAGMENT_SHADER, .Source = camera_frag}, - }; - - GLuint program = - m_skr_gl_create_program_from_shaders(shaders, sizeof(shaders)); - - SkrShaderProgram programs[1] = {{ - .ID = program, - .Name = "camera", - .Shaders = shaders, - .ShaderCount = sizeof(shaders) / sizeof(SkrShader), - }}; - - state.Programs = programs; - state.ProgramCount = sizeof(programs) / sizeof(SkrShaderProgram); - - SkrTexture textures[2] = { - {.Path = "assets/container.jpg"}, - {.Path = "assets/awesomeface.png"}, - }; - - SkrVertex vertices[36] = {{{-0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}}, - {{0.5f, -0.5f, -0.5f}, {1.0f, 0.0f}}, - {{0.5f, 0.5f, -0.5f}, {1.0f, 1.0f}}, - {{0.5f, 0.5f, -0.5f}, {1.0f, 1.0f}}, - {{-0.5f, 0.5f, -0.5f}, {0.0f, 1.0f}}, - {{-0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}}, - - {{-0.5f, -0.5f, 0.5f}, {0.0f, 0.0f}}, - {{0.5f, -0.5f, 0.5f}, {1.0f, 0.0f}}, - {{0.5f, 0.5f, 0.5f}, {1.0f, 1.0f}}, - {{0.5f, 0.5f, 0.5f}, {1.0f, 1.0f}}, - {{-0.5f, 0.5f, 0.5f}, {0.0f, 1.0f}}, - {{-0.5f, -0.5f, 0.5f}, {0.0f, 0.0f}}, - - {{-0.5f, 0.5f, 0.5f}, {1.0f, 0.0f}}, - {{-0.5f, 0.5f, -0.5f}, {1.0f, 1.0f}}, - {{-0.5f, -0.5f, -0.5f}, {0.0f, 1.0f}}, - {{-0.5f, -0.5f, -0.5f}, {0.0f, 1.0f}}, - {{-0.5f, -0.5f, 0.5f}, {0.0f, 0.0f}}, - {{-0.5f, 0.5f, 0.5f}, {1.0f, 0.0f}}, - - {{0.5f, 0.5f, 0.5f}, {1.0f, 0.0f}}, - {{0.5f, 0.5f, -0.5f}, {1.0f, 1.0f}}, - {{0.5f, -0.5f, -0.5f}, {0.0f, 1.0f}}, - {{0.5f, -0.5f, -0.5f}, {0.0f, 1.0f}}, - {{0.5f, -0.5f, 0.5f}, {0.0f, 0.0f}}, - {{0.5f, 0.5f, 0.5f}, {1.0f, 0.0f}}, - - {{-0.5f, -0.5f, -0.5f}, {0.0f, 1.0f}}, - {{0.5f, -0.5f, -0.5f}, {1.0f, 1.0f}}, - {{0.5f, -0.5f, 0.5f}, {1.0f, 0.0f}}, - {{0.5f, -0.5f, 0.5f}, {1.0f, 0.0f}}, - {{-0.5f, -0.5f, 0.5f}, {0.0f, 0.0f}}, - {{-0.5f, -0.5f, -0.5f}, {0.0f, 1.0f}}, - - {{-0.5f, 0.5f, -0.5f}, {0.0f, 1.0f}}, - {{0.5f, 0.5f, -0.5f}, {1.0f, 1.0f}}, - {{0.5f, 0.5f, 0.5f}, {1.0f, 0.0f}}, - {{0.5f, 0.5f, 0.5f}, {1.0f, 0.0f}}, - {{-0.5f, 0.5f, 0.5f}, {0.0f, 0.0f}}, - {{-0.5f, 0.5f, -0.5f}, {0.0f, 1.0f}}}; - - SkrMesh mesh; - - mesh.Vertices = vertices; - mesh.VertexCount = sizeof(vertices) / sizeof(SkrVertex); - mesh.Textures = textures; - mesh.TextureCount = sizeof(textures) / sizeof(SkrTexture); - mesh.Backend.GL.Program = program; - - m_skr_gl_mesh_init(&mesh); - - m_skr_gl_shader_use(program); - m_skr_gl_shader_set_int(program, "texture1", 0); - m_skr_gl_shader_set_int(program, "texture2", 1); + SkrTriangle(&state); while (!SkrWindowShouldClose(state.Window)) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - m_skr_gl_mesh_bind_textures(&mesh); - m_skr_gl_shader_use(program); - - if (g_skr_camera) { - mat4 projection; - glm_perspective(glm_rad(g_skr_camera->FOV), - (float)state.Window->Width / - (float)state.Window->Height, - 0.1f, 100.0f, projection); - m_skr_gl_shader_set_mat4(program, "projection", - projection); - - mat4 view; - vec3 center; - glm_vec3_add(g_skr_camera->Position, - g_skr_camera->Front, center); - glm_lookat(g_skr_camera->Position, center, - g_skr_camera->Up, view); - m_skr_gl_shader_set_mat4(program, "view", view); - } - - glBindVertexArray(mesh.VAO); - - for (unsigned int i = 0; i < 10; i++) { - mat4 model; - glm_mat4_identity(model); // initialize to identity - - // translate to position - glm_translate(model, cubePositions[i]); - - // rotate by 20*i degrees - glm_rotate(model, glm_rad(20.0f * (float)i), - (vec3){1.0f, 0.3f, 0.5f}); - - m_skr_gl_shader_set_mat4(program, "model", model); - glDrawArrays(GL_TRIANGLES, 0, 36); - } - - glfwSwapBuffers(state.Window->Backend.Handler.GLFW); - glfwPollEvents(); + SkrRendererRender(&state); } SkrFinalize(&state); + return 0; }