기존 offset으로 Position을 잡았던 부분을 Matrix를 활용
SimpleMath.cpp / SimpleMath.h / SimpleMath.inl을 추가
using Vec2 = DirectX::XMFLOAT2;
using Vec3 = DirectX::XMFLOAT3;
using Vec4 = DirectX::XMFLOAT4;
#include <Windows.h>
#include "SimpleMath.h"
using Vec2 = DirectX::SimpleMath::Vector2;
using Vec3 = DirectX::SimpleMath::Vector3;
using Vec4 = DirectX::SimpleMath::Vector4;
using Matrix = DirectX::SimpleMath::Matrix;
Vec3 offset;
float dummy;
Matrix matWorld = Matrix:Identity;
Matrix matView = Matrix:Identity;
Matrix matProjection = Matrix:Identity;
void Game::Update()
{
_transformData.offset.x = 0.3f;
_transformData.offset.y = 0.3f;
}
void Game:;Update()
{
Matrix matScale = Matrix::CreateScale(_localScale);
Matrix matRotation = Matrix::CreateRotationX(_localRotation.x);
matRotation *= Matrix::CreateRotationY(_localRotation.y);
matRotation *= Matrix::CreateRotationZ(_localRotation.z);
Matrix matTranslation = Matrix::CreateTranslation(_localPosition);
Matrix matWorld = matScale * matRotation * matTranslation;
_transformData.matWorld = matWorld;
}
cbuffer TransformData : register(b0)
{
float4 offset;
}
VS_OUTPUT VS (VS_INPUT input)
{
output.position = input.position + offset;
}
cbuffer TransformData : register(b0)
{
row_major matrix matWorld;
row_major matrix matView;
row_major matrix matProjection;
}
VS_OUTPUT VS (VS_INPUT input)
{
float4 position = mul(input.position, matWorld);
position = mul(position, matView);
position = mul(position, matProjection);
output.position = position;
}