From 7b214503608550dc2853b9e01526723f8c65baf3 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 12 May 2020 14:14:06 +0200 Subject: Added mat4 in libftm, can rotate, scale and translate vector --- src/gl.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/gl.c') diff --git a/src/gl.c b/src/gl.c index 82e33a9..557cb63 100644 --- a/src/gl.c +++ b/src/gl.c @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/05/11 01:31:10 by charles #+# #+# */ -/* Updated: 2020/05/11 10:42:42 by charles ### ########.fr */ +/* Updated: 2020/05/12 14:07:04 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,20 +16,26 @@ int gl_state_init(t_gl_state *state, t_object *object) { if ((state->shader = shader_new()) == 0) return (-1); + GL_CALL(state->mvp_location = glGetUniformLocation(state->shader, "u_mvp")); + if (state->mvp_location == -1) + return (-1); + + GL_CALL(glGenVertexArrays(1, &state->vertex_array)); GL_CALL(glGenBuffers(1, &state->vertex_buf)); + GL_CALL(glGenBuffers(1, &state->index_buf)); + + GL_CALL(glBindVertexArray(state->vertex_array)); + GL_CALL(glBindBuffer(GL_ARRAY_BUFFER, state->vertex_buf)); GL_CALL(glBufferData(GL_ARRAY_BUFFER, sizeof(float) * object->vertices_len, object->vertices, GL_STATIC_DRAW)); - GL_CALL(glGenBuffers(1, &state->index_buf)); GL_CALL(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, state->index_buf)); - GL_CALL(glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(float) * object->indices_len, + GL_CALL(glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int) * object->indices_len, object->indices, GL_STATIC_DRAW)); - GL_CALL(glGenVertexArrays(1, &state->vertex_array)); - GL_CALL(glBindVertexArray(state->vertex_array)); + GL_CALL(glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 3, (void*)0)); GL_CALL(glEnableVertexAttribArray(0)); - GL_CALL(glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 3, (const void*)0)); return (0); } @@ -42,3 +48,8 @@ void gl_state_quit(t_gl_state *state, t_object *object) free(object->vertices); free(object->indices); } + +void gl_state_set_mvp(t_gl_state *state, t_ftmmat4 *mvp) +{ + GL_CALL(glUniformMatrix4fv(state->mvp_location, 1, GL_TRUE, mvp->m)); +} -- cgit