Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.70 KB | None | 0 0
  1. #include "Camera.h"
  2.  
  3.  
  4. CCamera::CCamera(void)
  5. {
  6.     Position = vec3(0,0,0);
  7.     Look = vec3(0,0,-1);
  8.     Up = vec3(0,1,0);
  9.     Projection = mat4_identity;
  10. }
  11.  
  12.  
  13. CCamera::~CCamera(void)
  14. {
  15. }
  16.  
  17. inline void CCamera::Create(float x, float y, float z)
  18. {
  19.     Position = vec3(x, y, z);
  20. }
  21.  
  22. void CCamera::Perspective(float fov, float aspect, float znear, float zfar)
  23. {
  24. //  Projection=GLPerspective(fov,aspect,znear,zfar);
  25.     float f = (float) 1.0f/tanf(fov*(math_pi/90));
  26.     Projection.set((float)f/aspect, 0, 0, 0,
  27.                     0,  f,  00,
  28.                     00(float)(zfar+znear)/(znear-zfar), -1.0,
  29.                     0, 0, (float)(zfar*znear*2)/(znear-zfar), 0);
  30. }
  31.  
  32.  void CCamera::Rotate(float Yaw, float Pitch)
  33. {
  34.     m_fYaw +=Yaw;
  35.     m_fPitch +=Pitch;
  36. }
  37.  
  38. void CCamera::Move(float x, float y, float z)
  39. {
  40.     Position +=vec3(x,y,z);
  41. }
  42.  
  43. void CCamera::Setup(GLuint shaderProgramID)
  44. {
  45.     GLfloat cosYaw = cosf(3.1415*180.0/m_fYaw);
  46.     GLfloat sinYaw = sinf(3.1415*180.0/m_fYaw);
  47.     GLfloat cosPitch = cosf(3.1415*180.0/m_fPitch);
  48.     GLfloat sinPitch = sinf(3.1415*180.0/m_fPitch);
  49.  
  50.     vec3 Forward(sinYaw*cosPitch, sinPitch, cosPitch*(-cosYaw));
  51.  
  52.     vec3 Look = Position + Forward;
  53.  
  54.     mat4 viewProjection =LookAt(Position,Look,Up)*Projection ;
  55.  
  56.        
  57. //      mat4 asd =GLLookAt(Position,Look,Up) * Projection ;
  58.  
  59.     glUniformMatrix4fv(glGetUniformLocation(shaderProgramID,"viewProjection"),1,GL_TRUE,viewProjection.m);
  60. }
  61.  
  62. mat4 CCamera::LookAt(vec3 Eye, vec3 Look, vec3 Up)
  63. {
  64.     vec3 zAxis = normalize(Eye-Look);
  65.     vec3 xAxis = normalize(cross(Up,zAxis));
  66.     vec3 yAxis = cross(zAxis,xAxis);
  67.      
  68.     return mat4(xAxis.x, xAxis.y, xAxis.z, (-dot(xAxis,Eye)),
  69.                 xAxis.x, xAxis.y, xAxis.z, (-dot(xAxis,Eye)),
  70.                 xAxis.x, xAxis.y, xAxis.z, (-dot(xAxis,Eye)),
  71.                 0,          0,      0,      1);
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement