Files
scuffedcraft/src/main.c

106 lines
2.1 KiB
C

#include <assert.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include "pltf/gl_funcs.h"
#include "pltf/pltf.h"
#include "shader.h"
void key_cb(const PltfKey key, const PltfKeyAction action) {
switch (key) {
case PLTF_KEY_ESC:
pltf_window_destroy();
break;
case PLTF_KEY_Q:
{
switch (action) {
case PLTF_KEY_UP:
printf("Q up\n");
break;
case PLTF_KEY_DOWN:
printf("Q down\n");
break;
}
break;
}
default:
break;
}
}
int main() {
pltf_init();
pltf_window_create();
pltf_gl_ctx_create();
pltf_gl_funcs_load();
pltf_key_callback_set(key_cb);
// clang-format off
const float triangle_verts[] = {
// pos
0.0f, 0.5f, 0.0f, // top
-0.25f, -0.25f, 0.0f, // bottom-left
0.25f, -0.25f, 0.0f // bottom-right
};
// clang-format on
const size_t triangle_vert_count = sizeof(triangle_verts) / sizeof(triangle_verts[0]) / 3;
unsigned int triangle_vao = 0;
glGenVertexArrays(1, &triangle_vao);
glBindVertexArray(triangle_vao);
unsigned int triangle_vbo = 0;
glGenBuffers(1, &triangle_vbo);
glBindBuffer(GL_ARRAY_BUFFER, triangle_vbo);
glBufferData(
GL_ARRAY_BUFFER,
sizeof(triangle_verts),
triangle_verts,
GL_STATIC_DRAW
);
glEnableVertexAttribArray(0);
glVertexAttribPointer(
0,
3,
GL_FLOAT,
GL_FALSE,
sizeof(float) * 3,
(void*) 0
);
glBindVertexArray(0);
const unsigned int shader = shader_create(
"shader.vert",
"shader.frag"
);
glClearColor(0.0f, 0.0f, 0.8f, 1.0f);
while (true) {
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(shader);
glBindVertexArray(triangle_vao);
glDrawArrays(GL_TRIANGLES, 0, triangle_vert_count);
pltf_swap_buffers();
const int pltf_we = pltf_window_event_handle();
if (pltf_we == PLTF_WE_DESTROY) {
break;
}
}
pltf_gl_ctx_destroy();
pltf_window_destroy();
pltf_deinit();
return 0;
}