Camera Class 구현

Programming 2007/06/19 00:20


















예전에 만들었던 Camera Class

Header 부분..

추가할것이 많은데..








#ifndef MYCAMERA_H
#define MYCAMERA_H

#include <d3d9.h>
#include <d3dx9.h>
#include "MyTypeDef.h"

class MyCamera
{
public:
 MyCamera(unsigned int uiCameraNum, D3DXVECTOR3 vEyePoint, D3DXVECTOR3 vLookAtPoint, D3DXVECTOR3 vUpVec);
 virtual ~MyCamera();

 static MyCamera* ms_pkCamera;
 static MyCamera* Create(unsigned int uiCameraNum, D3DXVECTOR3 vEyePoint, D3DXVECTOR3 vLookAtPoint, D3DXVECTOR3 vUpVec);
 static MyCamera* GetThis();

 D3DXMATRIXA16* GetViewMatrix();
 D3DXMATRIXA16* GetProjectionMatrix();
 D3DXMATRIXA16* GetWorldMatrix();
 D3DXMATRIXA16* GetFrustumMatrix();

 // EyePoint 와 LookAtPoint 와 UpVec로 세팅함..
 D3DXMATRIXA16* SetView(D3DXVECTOR3* pvEyePoint, D3DXVECTOR3* pvLookAtPoint, D3DXVECTOR3* pvUpVec);

 void SetCameraEye(D3DXVECTOR3* pEyePoint);
 D3DXVECTOR3* GetCameraEye() { return &m_vEyePoint; }

 void SetCameraLookAt(D3DXVECTOR3* pLookAtPoint);
 D3DXVECTOR3* GetCameraLookAt() { return &m_vLookAtPoint; }

 void SetCameraUp(D3DXVECTOR3* pUp);
 D3DXVECTOR3* GetCameraUp() { return &m_vUpVec; }

 void Flush() { SetView(&m_vEyePoint, &m_vLookAtPoint, &m_vUpVec); }

 // 카메라좌표계의 X, Y 축으로 fAngle만큼 이동.
 D3DXMATRIXA16* RotateCameraX(float fAngle);
 D3DXMATRIXA16* RotateCameraY(float fAngle);

 // 월드좌표계의 *pVec 값의 위치로 이동함
 D3DXMATRIXA16* MoveWorldTo(D3DXVECTOR3* pVec);

 // 카메라좌표계의 X, Y, Z축 방향으로 Move
 D3DXMATRIXA16* MoveCameraX(float fDist);
 D3DXMATRIXA16* MoveCameraY(float fDist);
 D3DXMATRIXA16* MoveCameraZ(float fDist);

 virtual bool OnDefault(MyEventRecord* pEvent);
 virtual void OnIdle();

protected:
 


private:
 unsigned int m_uiCameraNum;

 D3DXVECTOR3 m_vEyePoint; // 카메라 현재 위치
 D3DXVECTOR3 m_vLookAtPoint; // 카메라 시선 위치
 D3DXVECTOR3 m_vUpVec; // 카메라 정수리 벡터

 D3DXVECTOR3 m_vView; // 카메라가 향하는 단위방향벡터
 D3DXVECTOR3 m_vCross; // 카메라의 측면 벡터 cross(view, up);

 D3DXMATRIXA16 m_matView; // 카메라 행렬
 D3DXMATRIXA16 m_matProjection;
 D3DXMATRIXA16 m_matWorld;
 D3DXMATRIXA16 m_matFrustum;
 
 bool m_bMouseMoving;
 bool m_bKeyBoardMoving;

 bool m_bRButtonDown;

 int m_nPrevMouseX;
 int m_nPrevMouseY;
};

#include "MyCamera.inl"

#endif

'Programming' 카테고리의 다른 글

ID3DXSprite::Begin  (0) 2007/10/02
D3DXCreateSprite  (0) 2007/09/30
연결 리스트 ( Linked List ) 링크드 리스트  (0) 2007/09/23
순열(next_permutation)과 문자열 변환  (0) 2007/09/16
next_permutation  (0) 2007/09/13
DICamera  (0) 2007/06/19
Camera Class 구현  (0) 2007/06/19
DirectX Study (3)  (0) 2007/06/19
DirectX Study (2)  (0) 2007/06/18
DirectX Study (1)  (0) 2007/06/18
구조체  (0) 2007/06/16
Posted by Hangenie

트랙백 주소 :: http://hangenie.com/trackback/20 관련글 쓰기

댓글을 달아 주세요