void bc_perspective_camera::set_projection(bcUINT16 p_back_buffer_width, bcUINT16 p_back_buffer_height, bcFLOAT p_near_clip, bcFLOAT p_far_clip) noexcept { m_screen_width = p_back_buffer_width; m_screen_height = p_back_buffer_height; m_near = p_near_clip; m_far = p_far_clip; m_aspect_ratio = bcFLOAT(p_back_buffer_width) / p_back_buffer_height; create_projection_matrix(); }
void bc_orthographic_camera::set_projection(bcUINT16 p_back_buffer_width, bcUINT16 p_back_buffer_height, bcFLOAT p_near_clip, bcFLOAT p_far_clip) noexcept { m_screen_width = p_back_buffer_width; m_screen_height = p_back_buffer_height; m_near = p_near_clip; m_far = p_far_clip; m_min_x = 0; m_max_x = p_back_buffer_width; m_min_y = 0; m_max_y = p_back_buffer_height; create_projection_matrix(); }
void resize_function(GLFWwindow *window, int width, int height) { t_env *env; env = glfwGetWindowUserPointer(window); env->wnd_width = width; env->wnd_height = height; glViewport(0, 0, (GLsizei)width, (GLsizei)height); env->projection = create_projection_matrix(env->camera.fov, (float)env->wnd_width / env->wnd_height, env->camera.near_plane, env->camera.far_plane); glUseProgram(env->shader->program); glUniformMatrix4fv(env->shader->uniforms[2], 1, GL_FALSE, env->projection.m); glUseProgram(0); }