diff options
-rw-r--r-- | demo.c | 2 | ||||
-rw-r--r-- | demo.fs | 2 | ||||
-rw-r--r-- | include/shader.h | 22 | ||||
-rw-r--r-- | src/shader.c | 22 |
4 files changed, 33 insertions, 15 deletions
@@ -153,8 +153,6 @@ int main() { honey_shader_set_int(shader, "box_texture", 0); honey_shader_set_int(shader, "happy_texture", 1); - honey_shader_set_vec3(shader, "extra_color", (vec3){0, 0, 1}); - glm_mat4_identity(model); //glm_rotate_x(model, glm_rad(-55), model); honey_shader_set_mat4(shader, "model", model); @@ -12,6 +12,6 @@ out vec4 FragColor; void main() { FragColor = mix(texture(box_texture, texture_coordinate), - vec4(extra_color.xyz, 1.0), + texture(happy_texture, texture_coordinate), 0.2); } diff --git a/include/shader.h b/include/shader.h index 262b153..40561d4 100644 --- a/include/shader.h +++ b/include/shader.h @@ -38,30 +38,40 @@ enum honey_shader_result honey_shader_load(honey_shader* shader, * * @param[in] shader The shader to which the uniform belongs * @param[in] int_name The name of the integer uniform - * @param[in] number The value of the integer uniform + * @param[in] value The value of the integer uniform */ void honey_shader_set_int(honey_shader shader, char* int_name, - int number); + int value); + +/** @brief Set a float uniform. + * + * @param[in] shader The shader to which the uniform belongs + * @param[in] float_name The name of the float uniform + * @param[in] value The value of the float uniform + */ +void honey_shader_set_float(honey_shader shader, + char* float_name, + float value); /** @brief Set a vec3 uniform. * @param[in] shader The shader to which the uniform belongs * @param[in] vector_name The name of the vec3 uniform - * @param[in] vector The value of the vector uniform + * @param[in] value The value of the vector uniform */ void honey_shader_set_vec3(honey_shader shader, char* vector_name, - vec3 vector); + vec3 value); /** @brief Set a mat4 uniform. * * @param[in] shader The shader to which the uniform belongs * @param[in] matrix_name The name of the matrix uniform - * @param[in] matrix The value of the matrix uniform + * @param[in] value The value of the matrix uniform */ void honey_shader_set_mat4(honey_shader shader, char* matrix_name, - mat4 matrix); + mat4 value); /** @brief Use a shader. */ diff --git a/src/shader.c b/src/shader.c index 530cc8f..e9d79a6 100644 --- a/src/shader.c +++ b/src/shader.c @@ -91,30 +91,40 @@ enum honey_shader_result honey_shader_load(honey_shader* shader, void honey_shader_set_int(honey_shader shader, char* int_name, - int number) { + int value) { honey_shader_use(shader); unsigned int int_location = glGetUniformLocation(shader, int_name); - glUniform1i(int_location, number); + glUniform1i(int_location, value); +} + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +void honey_shader_set_float(honey_shader shader, + char* float_name, + float value) { + honey_shader_use(shader); + unsigned int float_location = glGetUniformLocation(shader, float_name); + glUniform1f(float_location, value); } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ void honey_shader_set_vec3(honey_shader shader, char* vector_name, - vec3 vector) { + vec3 value) { honey_shader_use(shader); unsigned int vector_location = glGetUniformLocation(shader, vector_name); - glUniform3fv(vector_location, 1, (float*) vector); + glUniform3fv(vector_location, 1, (float*) value); } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ void honey_shader_set_mat4(honey_shader shader, char* matrix_name, - mat4 matrix) { + mat4 value) { glUseProgram(shader); unsigned int matrix_location = glGetUniformLocation(shader, matrix_name); - glUniformMatrix4fv(matrix_location, 1, GL_FALSE, (float*) matrix); + glUniformMatrix4fv(matrix_location, 1, GL_FALSE, (float*) value); } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ |