Advertisement
ChocoMan

Untitled

Apr 15th, 2014
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. #include "Pipline.h"
  2.  
  3.  
  4. Pipeline::Pipeline()
  5. {
  6.     m_scale = glm::fvec3(1.f, 1.f, 1.f);
  7.     m_worldPos = glm::fvec3(0.f, 0.f, 0.f);
  8.     m_rotateInfo = glm::fvec3(0.f, 0.f, 0.f);
  9. }
  10.  
  11.  
  12. Pipeline::~Pipeline()
  13. {
  14. }
  15.  
  16.  
  17. void Pipeline::Scale(float ScaleX, float ScaleY, float ScaleZ)
  18. {
  19.     m_scale.x = ScaleX;
  20.     m_scale.y = ScaleY;
  21.     m_scale.z = ScaleZ;
  22. }
  23.  
  24.  
  25. void Pipeline::WorldPos(float x, float y, float z)
  26. {
  27.     m_worldPos.x = x;
  28.     m_worldPos.y = y;
  29.     m_worldPos.z = z;
  30. }
  31.  
  32.  
  33. void Pipeline::Rotate(float RotateX, float RotateY, float RotateZ)
  34. {
  35.     m_rotateInfo.x = RotateX;
  36.     m_rotateInfo.y = RotateY;
  37.     m_rotateInfo.z = RotateZ;
  38. }
  39.  
  40.  
  41. void Pipeline::SetPerpsectiveProj(float FOV, float Width, float Height, float zNear, float zFar)
  42. {
  43.     m_persProjInfo.FOV = FOV;
  44.     m_persProjInfo.Width = Width;
  45.     m_persProjInfo.Height = Height;
  46.     m_persProjInfo.zNear = zNear;
  47.     m_persProjInfo.zFar = zFar;
  48. }
  49.  
  50.  
  51. void Pipeline::SetPerpsectiveProj(const PersProjInfo &p)
  52. {
  53.     m_persProjInfo = p;
  54. }
  55.  
  56.  
  57. void Pipeline::SetCamera(const glm::vec3 &Pos, const glm::vec3 &Target, const glm::vec3 &Up)
  58. {
  59.     m_camera.Pos = Pos;
  60.     m_camera.Target = Target;
  61.     m_camera.Up = Up;
  62. }
  63.  
  64.  
  65. const Mat4f &Pipeline::GetVPTrans()
  66. {
  67.     Mat4f CameraTranslationTrans, CameraRotateTrans, PersProjTrans;
  68.  
  69.     CameraTranslationTrans.InitTranslationTransform(-m_camera.Pos.x, -m_camera.Pos.y, -m_camera.Pos.z);
  70.     CameraRotateTrans.InitCameraTransform(m_camera.Target, m_camera.Up);
  71.     PersProjTrans.InitPersProjTransform(m_persProjInfo.FOV, m_persProjInfo.Width, m_persProjInfo.Height, m_persProjInfo.zNear, m_persProjInfo.zFar);
  72.  
  73.     m_VPTransformation = PersProjTrans * CameraRotateTrans * CameraTranslationTrans;
  74.  
  75.     return m_VPTransformation;
  76. }
  77.  
  78.  
  79. const Mat4f &Pipeline::GetWorldTrans()
  80. {
  81.     Mat4f ScaleTrans, RotateTrans, TranslationTrans;
  82.  
  83.     ScaleTrans.InitScaleTransform(m_scale.x, m_scale.y, m_scale.z);
  84.     RotateTrans.InitRotateTransform(m_rotateInfo.x, m_rotateInfo.y, m_rotateInfo.z);
  85.     TranslationTrans.InitTranslationTransform(m_worldPos.x, m_worldPos.y, m_worldPos.z);
  86.  
  87.     m_WorldTransformation = TranslationTrans * RotateTrans * ScaleTrans;
  88.     return m_WorldTransformation;
  89. }
  90.  
  91.  
  92. const Mat4f &Pipeline::GetWVPTrans()
  93. {
  94.     GetWorldTrans();
  95.     GetVPTrans();
  96.  
  97.     m_WVPtransformation = m_VPTransformation * m_WorldTransformation;
  98.     return m_WVPtransformation;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement