-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcamera.cpp
117 lines (80 loc) · 2.81 KB
/
camera.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//=============================================================================
//
// カメラ処理 [camera.cpp]
// Author : GP11A132 21 DAYA MAHAPUTRA
//
//=============================================================================
#include "main.h"
#include "renderer.h"
#include "camera.h"
D3DXMATRIX g_CameraViewMatrix;
D3DXMATRIX g_CameraInvViewMatrix;
D3DXMATRIX g_CameraProjectionMatrix;
D3DXVECTOR3 g_CameraPosition;
D3DXVECTOR3 g_CameraTarget;
D3DXVECTOR3 g_CameraRotation;
D3DXMATRIX GetCameraViewMatrix()
{
return g_CameraViewMatrix;
}
D3DXMATRIX GetCameraInvViewMatrix()
{
return g_CameraInvViewMatrix;
}
D3DXMATRIX GetCameraProjectionMatrix()
{
return g_CameraProjectionMatrix;
}
D3DXVECTOR3 GetCameraPosition()
{
return g_CameraPosition;
}
//=============================================================================
// 初期化処理
//=============================================================================
void InitCamera(void)
{
g_CameraPosition = D3DXVECTOR3( 0.0f, 50.0f, -100.0f );
g_CameraTarget = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
g_CameraRotation = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
}
//=============================================================================
// 終了処理
//=============================================================================
void UninitCamera(void)
{
}
//=============================================================================
// 更新処理
//=============================================================================
void UpdateCamera(void)
{
//if( GetKeyState( VK_LEFT ) & 0x80 )
//{
// g_CameraRotation.y -= 0.02f;
//}
//else if( GetKeyState( VK_RIGHT ) & 0x80 )
//{
// g_CameraRotation.y += 0.02f;
//}
D3DXVECTOR3 playerPosition;
playerPosition = D3DXVECTOR3(0.0f, 0.0f, 0.0f); // GetPlayerPosition();
g_CameraTarget.x = playerPosition.x * 0.5f;
g_CameraTarget.z = playerPosition.z * 0.5f;
g_CameraPosition.x = g_CameraTarget.x + sinf( g_CameraRotation.y ) * 100.0f;
g_CameraPosition.z = g_CameraTarget.z - cosf( g_CameraRotation.y ) * 100.0f;
}
//=============================================================================
// 描画処理
//=============================================================================
void SetCamera(void)
{
// ビューマトリックス設定
D3DXMatrixLookAtLH( &g_CameraViewMatrix, &g_CameraPosition, &g_CameraTarget, &D3DXVECTOR3(0.0f, 1.0f, 0.0f) );
SetViewMatrix( &g_CameraViewMatrix );
float det;
D3DXMatrixInverse(&g_CameraInvViewMatrix, &det, &g_CameraViewMatrix);
// プロジェクションマトリックス設定
D3DXMatrixPerspectiveFovLH( &g_CameraProjectionMatrix, 1.0f, (float)SCREEN_WIDTH / (float)SCREEN_HEIGHT, 1.0f, 1000.0f);
SetProjectionMatrix( &g_CameraProjectionMatrix );
}