폰트와 스프라이트는 xy평면에 Projection된것으로 간주하기 때문에 Vertex구조와 constant buffer구조가 간단하다. 그래서 쉽게 처리했다.
이번에 처리한 오브젝트 타입은 캐릭터를 비롯해서 Light map을 사용하지 않는 모든 오브젝트에 범용적으로 사용하는-나는 VLMeshObject라 부른다-범용 오브젝트라 Vertex구조와 constant buffer구조가 매우 복잡하다. 덕분에 descriptor table설정하는데 상당히 시간을 보냈다.
그랬는데 렌더링이 안됨. 안될뿐 아니라 VS2015의 Graphics Debugging으로 돌려보면 d3d12에러가 발생함. 전혀 엉뚱하게 IASetVertexBuffer에서 command list에 없는 리소스를 억세스하고 있다는 괴상한 에러 메시지가 뜬다.
졸리니까 일단 잤다.
스벅에서 새벽의 그 문제를 잡으려고 surface book으로 디버깅을 하는데 데스크탑 GTX970에서 나오던 D3D에러가 Surface book에선 나오지 않음. 에러는 안나고 렌더링 되어야할 판대기는 렌더링이 안됨. 일단 에러 문제는 넘어가고 판대기 렌더링 안되는 문제를 살펴보다가 렌더링 절차에 문제가 있었음을 발견. 문제가 있는건 맞는데 왜 그게 IASetVertexBuffer()가 실패하는 식으로 에러가 떴는지는 모르겠다. 하여간 문제 해결하고 이제 렌더링 제대로 됨.
Visual Studio 2015의 그래픽 디버거 엄청나게 도움된다.이거 아니면 아직도 버그 못찾았을듯. ALT+F5입니다. 두번 기억하세요. ALT+F5…