[Refactor] Consolidate duplicated matrix code into math util
This commit is contained in:
		
							parent
							
								
									cf48324516
								
							
						
					
					
						commit
						e8ca1630c6
					
				@ -1,36 +1,10 @@
 | 
			
		||||
#include <GL/glew.h>
 | 
			
		||||
 | 
			
		||||
#include "shape_renderer.h"
 | 
			
		||||
 | 
			
		||||
/* Yep, definately need a math lib, for now, this is just copy form txt_renderer
 | 
			
		||||
 * TODO: Refactor to math lib.
 | 
			
		||||
 */
 | 
			
		||||
void ortho_proj(float* mat, float left, float right, float bottom, float top,
 | 
			
		||||
           float near, float far) {
 | 
			
		||||
 | 
			
		||||
  mat[0]  = 2.0f / (right - left);
 | 
			
		||||
  mat[4]  = 0.0f;
 | 
			
		||||
  mat[8]  = 0.0f;
 | 
			
		||||
  mat[12] = -(right + left) / (right - left);
 | 
			
		||||
 | 
			
		||||
  mat[1]  = 0.0f;
 | 
			
		||||
  mat[5]  = 2.0f / (top - bottom);
 | 
			
		||||
  mat[9]  = 0.0f;
 | 
			
		||||
  mat[13] = -(top + bottom) / (top - bottom);
 | 
			
		||||
 | 
			
		||||
  mat[2]  = 0.0f;
 | 
			
		||||
  mat[6]  = 0.0f;
 | 
			
		||||
  mat[10] = -2.0f / (far - near);
 | 
			
		||||
  mat[14] = -(far + near) / (far - near);
 | 
			
		||||
 | 
			
		||||
  mat[3]  = 0.0f;
 | 
			
		||||
  mat[7]  = 0.0f;
 | 
			
		||||
  mat[11] = 0.0f;
 | 
			
		||||
  mat[15] = 1.0f;
 | 
			
		||||
}
 | 
			
		||||
#include "math/math.h"
 | 
			
		||||
 | 
			
		||||
ShapeRenderer::ShapeRenderer(unsigned int screen_width, unsigned int screen_height) {
 | 
			
		||||
  ortho_proj(_projection, 0.0f, (float)screen_width, 0.0f, (float)screen_height, -1.0f, 1.0f);
 | 
			
		||||
  math::ortho_proj(_projection, 0.0f, (float)screen_width, 0.0f, (float)screen_height, -1.0f, 1.0f);
 | 
			
		||||
 | 
			
		||||
  /* Load shader. */
 | 
			
		||||
  _shape_shader = new Shader("assets/shaders/shape.vert",
 | 
			
		||||
 | 
			
		||||
@ -5,35 +5,11 @@
 | 
			
		||||
#include <freetype/freetype.h>
 | 
			
		||||
 | 
			
		||||
#include "txt_renderer.h"
 | 
			
		||||
 | 
			
		||||
/* Not sure we'll need a whole math lib? Basic ortho for now. */
 | 
			
		||||
void ortho(float* mat, float left, float right, float bottom, float top,
 | 
			
		||||
           float near, float far) {
 | 
			
		||||
 | 
			
		||||
  mat[0]  = 2.0f / (right - left);
 | 
			
		||||
  mat[4]  = 0.0f;
 | 
			
		||||
  mat[8]  = 0.0f;
 | 
			
		||||
  mat[12] = -(right + left) / (right - left);
 | 
			
		||||
 | 
			
		||||
  mat[1]  = 0.0f;
 | 
			
		||||
  mat[5]  = 2.0f / (top - bottom);
 | 
			
		||||
  mat[9]  = 0.0f;
 | 
			
		||||
  mat[13] = -(top + bottom) / (top - bottom);
 | 
			
		||||
 | 
			
		||||
  mat[2]  = 0.0f;
 | 
			
		||||
  mat[6]  = 0.0f;
 | 
			
		||||
  mat[10] = -2.0f / (far - near);
 | 
			
		||||
  mat[14] = -(far + near) / (far - near);
 | 
			
		||||
 | 
			
		||||
  mat[3]  = 0.0f;
 | 
			
		||||
  mat[7]  = 0.0f;
 | 
			
		||||
  mat[11] = 0.0f;
 | 
			
		||||
  mat[15] = 1.0f;
 | 
			
		||||
}
 | 
			
		||||
#include "math/math.h"
 | 
			
		||||
 | 
			
		||||
TextRenderer::TextRenderer(unsigned int screen_width, unsigned int screen_height) {
 | 
			
		||||
  /* Create projection matrix. */
 | 
			
		||||
  ortho(_projecton, 0.0f, (float)screen_width, 0.0f, (float)screen_height, -1.0f, 1.0f);
 | 
			
		||||
  math::ortho_proj(_projecton, 0.0f, (float)screen_width, 0.0f, (float)screen_height, -1.0f, 1.0f);
 | 
			
		||||
 | 
			
		||||
  /* Load shader. */
 | 
			
		||||
  _txt_shader = new Shader("assets/shaders/text.vert",
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										29
									
								
								common/src/math/math.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								common/src/math/math.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
namespace math {
 | 
			
		||||
 | 
			
		||||
inline void ortho_proj(float* mat, float left, float right, float bottom, float top,
 | 
			
		||||
           float near, float far) {
 | 
			
		||||
 | 
			
		||||
  mat[0]  = 2.0f / (right - left);
 | 
			
		||||
  mat[4]  = 0.0f;
 | 
			
		||||
  mat[8]  = 0.0f;
 | 
			
		||||
  mat[12] = -(right + left) / (right - left);
 | 
			
		||||
 | 
			
		||||
  mat[1]  = 0.0f;
 | 
			
		||||
  mat[5]  = 2.0f / (top - bottom);
 | 
			
		||||
  mat[9]  = 0.0f;
 | 
			
		||||
  mat[13] = -(top + bottom) / (top - bottom);
 | 
			
		||||
 | 
			
		||||
  mat[2]  = 0.0f;
 | 
			
		||||
  mat[6]  = 0.0f;
 | 
			
		||||
  mat[10] = -2.0f / (far - near);
 | 
			
		||||
  mat[14] = -(far + near) / (far - near);
 | 
			
		||||
 | 
			
		||||
  mat[3]  = 0.0f;
 | 
			
		||||
  mat[7]  = 0.0f;
 | 
			
		||||
  mat[11] = 0.0f;
 | 
			
		||||
  mat[15] = 1.0f;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} /* namespace math */
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user