summaryrefslogtreecommitdiff
path: root/debug/debug.c
blob: 8cddc161dfcac5b906b7ef261418af4abe4c1f1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <GL/glew.h>
#include <GLFW/glfw3.h>

#include "common.h"

int main(void)
{
	state_t state = init_state(1600, 800, 1);
	init_glfw(&state);
	init_gl();

	F32 vertices[] = {
		-0.5f, -0.5f,
		 0.0f,  0.5f,
		 0.5f, -0.5f
	};
	U32 indices[] = {
		0, 1, 2
	};
	U32 vao = 0, vbo = 0, ebo = 0;
	glGenVertexArrays(1, &vao);
	glGenBuffers(1, &ebo);
	glGenBuffers(1, &vbo);
	glBindVertexArray(vao);
	glBindBuffer(GL_ARRAY_BUFFER, vbo);
	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
	glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
	glEnableVertexAttribArray(0);
	glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(F32), 0);
	glBindVertexArray(0);

	add_shader("shader.vert", "shader.frag", 0);
	U32 shader = find_shader("shader");
	glUseProgram(shader);

	glClearColor(0.16f, 0.16f, 0.16f, 1.0f);
	glBindVertexArray(vao);

	V2F offset = v2f(0.0f, 0.0f);
	F32 time = 0.0f;

	while (!glfwWindowShouldClose(state.window)) {
		handle_glfw_events(state.window, &state.input);
		F32 dt = lock_framerate(60);

		/* update */
		offset.x += 0.5f * dt;

		/* render */
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		glUniform2fv(glGetUniformLocation(shader, "offset"), 1, (F32 *)&offset);
		glUniform1f(glGetUniformLocation(shader, "time"), time);
		glDrawElements(GL_TRIANGLES, 3,  GL_UNSIGNED_INT, 0);

		glfwSwapBuffers(state.window);

		time += dt;
	}

	return 0;
}