D3D11에선 Map()한번으로 리소스로 사용하는 메모리의 RowPitch를 얻을 수 있었는데 D3D12에선 Map()해봐야 포인터 하나 달랑 나옴.
‘SystemMemory에 잡는 리소스의 경우 Pitch가 따로 없이 Width x SierPerPixel로 딱 맞아떨어지는 것인가! 그래서 CopyResource()할때 알아서 해주는 것인가!’
라고 생각했으나 UpdateSubresources()소스 코드를 따라가보니 RowPitch를 구해서 카피하고 있다.
역시 그런 자동화 따위 있을리가 있나. 게다가 수동제어를 전면에 내세운 D3D12에서…
하여간 텍스쳐에 락걸어서 직접 써넣기를 하려면 RowPitch가 필요한데 아래처럼 구할 수 있다. 밉맵이 1장인 경우이니 밉맵이 여러장이라면 알아서 파라미터를 바꿔쓸것.
D3D12_RESOURCE_DESC Desc = pTexture->GetDesc();
D3D12_PLACED_SUBRESOURCE_FOOTPRINT descFootPrint = {};
UINT Rows = 0;
UINT64 RowSize = 0;
UINT64 TotalBytes = 0;
m_pD3DDevice->GetCopyableFootprints(&Desc,0,1,0,&descFootPrint,&Rows,&RowSize,&TotalBytes);
