Added matrix

This commit is contained in:
2021-07-12 10:22:33 -07:00
parent 9bdd7057f2
commit 06a20a6f2e
11 changed files with 250 additions and 64 deletions

View File

@ -92,8 +92,8 @@ void shaderUse(shader_t *shader) {
}
void shaderUseCamera(shader_t *shader, camera_t *camera) {
glUniformMatrix4fv(shader->uniView, 1, GL_FALSE, camera->view[0]);
glUniformMatrix4fv(shader->uniProj, 1, GL_FALSE, camera->projection[0]);
shaderUseMatrix(shader, shader->uniView, &camera->view);
shaderUseMatrix(shader, shader->uniProj, &camera->projection);
}
void shaderUseTexture(shader_t *shader, texture_t *texture) {
@ -103,30 +103,24 @@ void shaderUseTexture(shader_t *shader, texture_t *texture) {
glUniform1i(shader->uniText, 0);
}
void shaderUseMatrix(shader_t *shader,shaderuniform_t uniform,matrix_t *matrix){
glUniformMatrix4fv(uniform, 1, GL_FALSE, matrix->internalMatrix[0]);
}
void shaderUsePosition(shader_t *shader,
float x, float y, float z,
float pitch, float yaw, float roll
) {
mat4 MATRIX_POSITION;
vec3 axis;
matrix_t matrix;
// Identify mat.
glm_mat4_identity(MATRIX_POSITION);
//Position
axis[0] = x, axis[1] = y, axis[2] = z;
glm_translate_make(MATRIX_POSITION, axis);
matrixIdentity(&matrix);
matrixTranslate(&matrix, x, y, z);
// Rotation (YZX order)
axis[0] = 0, axis[1] = 1, axis[2] = 0;
glm_rotate(MATRIX_POSITION, yaw, axis);
axis[1] = 0, axis[2] = 1;
glm_rotate(MATRIX_POSITION, roll, axis);
axis[0] = 1, axis[2] = 0;
glm_rotate(MATRIX_POSITION, pitch, axis);
//Send to the shader.
glUniformMatrix4fv(shader->uniModl, 1, GL_FALSE, MATRIX_POSITION[0]);
matrixRotate(&matrix, yaw, 0, 1, 0);
matrixRotate(&matrix, roll, 0, 0, 1);
matrixRotate(&matrix, pitch, 1, 0, 0);
shaderUseMatrix(shader, shader->uniModl, &matrix);
}
void shaderUsePositionAndScale(shader_t *shader,
@ -134,27 +128,17 @@ void shaderUsePositionAndScale(shader_t *shader,
float pitch, float yaw, float roll,
float scaleX, float scaleY, float scaleZ
) {
mat4 MATRIX_POSITION;
vec3 axis;
matrix_t matrix;
// Identify mat.
glm_mat4_identity(MATRIX_POSITION);
//Position
axis[0] = x, axis[1] = y, axis[2] = z;
glm_translate_make(MATRIX_POSITION, axis);
matrixIdentity(&matrix);
matrixTranslate(&matrix, x, y, z);
// Rotation (YZX order)
axis[0] = 0, axis[1] = 1, axis[2] = 0;
glm_rotate(MATRIX_POSITION, yaw, axis);
axis[1] = 0, axis[2] = 1;
glm_rotate(MATRIX_POSITION, roll, axis);
axis[0] = 1, axis[2] = 0;
glm_rotate(MATRIX_POSITION, pitch, axis);
matrixRotate(&matrix, yaw, 0, 1, 0);
matrixRotate(&matrix, roll, 0, 0, 1);
matrixRotate(&matrix, pitch, 1, 0, 0);
// Scale
axis[0] = scaleX, axis[1] = scaleY, axis[2] = scaleZ;
glm_scale(MATRIX_POSITION, axis);
matrixScale(&matrix, scaleX, scaleY, scaleZ);
glUniformMatrix4fv(shader->uniModl, 1, GL_FALSE, MATRIX_POSITION[0]);
shaderUseMatrix(shader, shader->uniModl, &matrix);
}