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
|
#include "game.h"
void game_setup(GameState *state) {
glUseProgram(state->triangle_sp);
Mat4 projection = calcify_ortho4m(0.0f, state->width, 0.0f, state->height, 0.1f, 10.0f);
i32 triangle_proj_loc = glGetUniformLocation(state->triangle_sp, "Projection");
glUniformMatrix4fv(triangle_proj_loc, 1, 0, projection.buffer);
glUseProgram(0);
};
void game_handle_event(GameState *state, GameEventType type) {
switch (type) {
case GAME_EVENT_RESIZE: {
glUseProgram(state->triangle_sp);
glViewport(0, 0, state->width, state->height);
Mat4 projection = calcify_ortho4m(0.0f, state->width, 0.0f, state->height, 1.0f, 10.0f);
i32 triangle_proj_loc = glGetUniformLocation(state->triangle_sp, "Projection");
glUniformMatrix4fv(triangle_proj_loc,
1, 0,
projection.buffer);
glUseProgram(0);
} break;
default:
break;
}
}
void game_update_and_render(GameState *state) {
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(state->triangle_sp);
Mat4 model = calcify_ident4m();
Mat4 scale = calcify_scaling_matrix4m(105.0f, 95.0f);
model = calcify_multiply4m(scale, model);
Mat4 pos = calcify_translation_matrix4m(350.0f, 950.0f, -1.0f);
model = calcify_multiply4m(pos, model);
i32 model_loc = glGetUniformLocation(state->triangle_sp,
"Model");
glUniformMatrix4fv(
model_loc,
1, 0,
model.buffer
);
Vec3 Color = (Vec3){.r=0.4,.g=0.9,.b=0.7};
glUniform3f(glGetUniformLocation(state->triangle_sp,
"Color"),
Color.r, Color.g, Color.b);
glBindVertexArray(state->triangle_vao);
glDrawArrays(GL_TRIANGLES, 0, 3);
glBindVertexArray(0);
}
|