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
|
#include "M_render.h"
void M_setupProjection(float fov, float aspect_ratio, M_RenderInfo *render_info)
{
glm_perspective(fov, aspect_ratio, 0.01f, 10.0f, render_info->projection_matrix);
}
void M_drawObject(M_RenderInfo *render_info, M_Camera *camera, M_Object *obj)
{
glUseProgram(obj->shader->prog);
glUniformMatrix4fv(obj->shader->transform_loc, 1, GL_FALSE, (float*)obj->transform);
M_ViewModel *model;
switch (obj->type) {
case M_OBJECT_CUBE:
model = &render_info->global_models[0];
break;
case M_OBJECT_CUSTOM:
model = obj->model;
break;
}
M_bindViewModel(model);
M_cameraViewMatrix(camera);
glUniformMatrix4fv(obj->shader->view_loc, 1, GL_FALSE, (float*)camera->view_matrix);
glUniformMatrix4fv(obj->shader->projection_loc, 1, GL_FALSE, (float*)render_info->projection_matrix);
glDrawElements(GL_TRIANGLES, model->num_indices, GL_UNSIGNED_INT, 0);
}
|