<aside> 💡
Copy Queue 에 대해서는 Resource Barrier 상태전환을 반드시 COMMON ↔ COPY_DEST 만 수행해야한다. 그 외에 대해 전환한다면 에러가 발생한다.
Copy Queue 에서 사용하는 리소스의 초기상태는 COMMON 이어야한다. </aside>
<aside> 💡
이번 문제는 Copy Queue 에 대해서 COMMON 에서 COPY_DEST 로 변환하는 것 외에 다른 상태로 상태로 전환해서 문제가 생겼다.
</aside>
<aside> 💡
그러나 추후에 다시 공식문서를 찾아보니 Copy Queue 에 대해서는 명시적인 Resource Barrier 상태전환을 권장하지 않았다. DX12 가 내부적으로 암시적인 상태전환을 해준다고 한다.
https://microsoft.github.io/DirectX-Specs/d3d/D3D12EnhancedBarriers.html#copy-queues
COMMON ↔ COPY_DEST 같은 명시적인 Resource Barrier 상태전환은
Direct Queue 에서 Copy Queue 가 수행하는 복사작업을 할 때 사용한다.
</aside>
<aside> 💡
암시적인 Resource Barrier 상태전환 관련해서도 공식문서를 살펴볼 수 있었다.
되도록이면 명시적인 상태전환을 피하는 것이 좋을 것 같다.
</aside>
void Game::LoadModel()
{
ModelLoader loader;
std::string flightPath = "Assets/spitfirev6/spitfirev6.obj";
flight1Mesh = loader.LoadMesh(&renderer, flightPath);
if (!flight1Mesh) {
MessageBox(hwnd, L"Failed to load flight mesh!", L"Error", MB_OK);
}
std::string bulletPath = "Assets/Bullet/bullet.obj";
bulletMesh = loader.LoadMesh(&renderer, bulletPath);
if (!bulletMesh) {
MessageBox(hwnd, L"Failed to load bullet mesh!", L"Error", MB_OK);
}
}
void Game::LoadTexture()
{
if (!(flight1Texture = textureManager.LoadTexture(L"Assets/spitfirev6/spitfirev6_Textures/base_Base_Color_1002.png"))) {
MessageBox(hwnd, L"Failed to load flight1 texture!", L"Error", MB_OK);
}
if (!(bulletTexture = textureManager.LoadTexture(L"Assets/Bullet/Textures/bullet_DefaultMaterial_BaseColor.png"))) {
MessageBox(hwnd, L"Failed to load bullet texture!", L"Error", MB_OK);
}
}