summaryrefslogtreecommitdiff
path: root/src/engine/M_render.c
blob: 1c4afa5b167db5f9319c2ba5434e1e1593450b8e (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
#include "M_render.h"

void M_setupProjection(float fov, float aspect_ratio, M_RenderInfo *render_info)
{
	glm_perspective(fov, aspect_ratio, 0.01f, render_info->render_distance, 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);
}