Cleanup: remove projection and views and add setters for mat3 and mat4 instead.
This commit is contained in:
		@ -18,7 +18,6 @@
 | 
			
		||||
 | 
			
		||||
static rk_shader const * rk_current_shader = nullptr;
 | 
			
		||||
static rk_vertices const * rk_current_vertices = nullptr;
 | 
			
		||||
static bool rk_frame = false;
 | 
			
		||||
 | 
			
		||||
static void rk_printf(char const * messsage) {
 | 
			
		||||
    printf("[RK_ENGINE] %s\n", messsage);
 | 
			
		||||
@ -146,10 +145,6 @@ rk_shader_t rk_load_shader(
 | 
			
		||||
        rk_free_shader_source(fragment_source, fragment_length);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    shader->uniforms.view = glGetUniformLocation(shader->program, "u_view");
 | 
			
		||||
    shader->uniforms.view_km = glGetUniformLocation(shader->program, "u_view_km");
 | 
			
		||||
    shader->uniforms.projection = glGetUniformLocation(shader->program, "u_projection");
 | 
			
		||||
 | 
			
		||||
    return shader;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -159,17 +154,6 @@ void rk_select_shader(
 | 
			
		||||
    if (shader) {
 | 
			
		||||
        rk_current_shader = shader;
 | 
			
		||||
        glUseProgram(shader->program);
 | 
			
		||||
        if (rk_frame) {
 | 
			
		||||
            if (shader->uniforms.view > -1) {
 | 
			
		||||
                glUniformMatrix4fv(shader->uniforms.view, 1, GL_FALSE, glm::value_ptr(rk_view));
 | 
			
		||||
            }
 | 
			
		||||
            if (shader->uniforms.view_km > -1) {
 | 
			
		||||
                glUniformMatrix4fv(shader->uniforms.view_km, 1, GL_FALSE, glm::value_ptr(rk_view_km));
 | 
			
		||||
            }
 | 
			
		||||
            if (shader->uniforms.projection > -1) {
 | 
			
		||||
                glUniformMatrix4fv(shader->uniforms.projection, 1, GL_FALSE, glm::value_ptr(rk_projection));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -193,23 +177,28 @@ void rk_set_input_float(
 | 
			
		||||
 | 
			
		||||
void rk_set_input_vec3(
 | 
			
		||||
    rk_input_t _input,
 | 
			
		||||
    rk_vec3 const & value,
 | 
			
		||||
    rk_input_mode mode) {
 | 
			
		||||
    rk_vec3 const & value) {
 | 
			
		||||
    GLint const input = reinterpret_cast<intptr_t>(_input) - 1;
 | 
			
		||||
    if (rk_current_shader && input > -1) {
 | 
			
		||||
        switch (mode) {
 | 
			
		||||
            case RK_INPUT_IDENTITY:
 | 
			
		||||
                glUniform3fv(input, 1, glm::value_ptr(value));
 | 
			
		||||
                break;
 | 
			
		||||
            case RK_INPUT_VIEW_POSITION: {
 | 
			
		||||
                glUniform3fv(input, 1, glm::value_ptr(rk_view * rk_vec4(value, 1.0)));
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            case RK_INPUT_VIEW_ORIENTATION: {
 | 
			
		||||
                glUniform3fv(input, 1, glm::value_ptr(rk_view * rk_vec4(value, 0.0)));
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        glUniform3fv(input, 1, glm::value_ptr(value));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rk_set_input_mat3(
 | 
			
		||||
    rk_input_t _input,
 | 
			
		||||
    rk_mat3 const & value) {
 | 
			
		||||
    GLint const input = reinterpret_cast<intptr_t>(_input) - 1;
 | 
			
		||||
    if (rk_current_shader && input > -1) {
 | 
			
		||||
        glUniformMatrix3fv(input, 1, GL_FALSE, glm::value_ptr(value));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rk_set_input_mat4(
 | 
			
		||||
    rk_input_t _input,
 | 
			
		||||
    rk_mat4 const & value) {
 | 
			
		||||
    GLint const input = reinterpret_cast<intptr_t>(_input) - 1;
 | 
			
		||||
    if (rk_current_shader && input > -1) {
 | 
			
		||||
        glUniformMatrix4fv(input, 1, GL_FALSE, glm::value_ptr(value));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -490,7 +479,6 @@ rk_batch_t rk_create_batch(
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rk_begin_frame() {
 | 
			
		||||
    rk_frame = true;
 | 
			
		||||
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -721,7 +709,6 @@ void rk_unselect_shader(
 | 
			
		||||
 | 
			
		||||
void rk_end_frame() {
 | 
			
		||||
    rk_swap_buffers();
 | 
			
		||||
    rk_frame = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rk_destroy_batch(
 | 
			
		||||
 | 
			
		||||
@ -27,17 +27,10 @@ enum : rk_uint {
 | 
			
		||||
    RK_PARAMS_BINDING = 1
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct rk_uniforms {
 | 
			
		||||
    GLint view;
 | 
			
		||||
    GLint view_km;
 | 
			
		||||
    GLint projection;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct rk_shader {
 | 
			
		||||
    GLuint vertex;
 | 
			
		||||
    GLuint fragment;
 | 
			
		||||
    GLuint program;
 | 
			
		||||
    rk_uniforms uniforms;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct rk_texture {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user