aaaaa
This commit is contained in:
parent
7f786be624
commit
07a4813edf
1 changed files with 11 additions and 139 deletions
144
main/main.c
144
main/main.c
|
|
@ -1,156 +1,28 @@
|
|||
#include <GL/glew.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <cglm/cglm.h>
|
||||
|
||||
#define SKR_BACKEND_API 0 // opengl
|
||||
#define SKR_BACKEND_WINDOW 0 // glfw
|
||||
#include <skr/skr.h>
|
||||
|
||||
SkrCamera* g_skr_camera = SkrDefaultFPSCamera;
|
||||
|
||||
int main(void) {
|
||||
SkrState state = SkrInit(&(SkrWindow){
|
||||
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 <main/shaders/camera.frag.c>
|
||||
#include <main/shaders/camera.vert.c>
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue