2014-01-30 3 views
0

나는 오랜 시간 동안 DirectX11에서 보냈으므로 내가 얻는 오류에 익숙하지 않다. 레이아웃 설명을 만든 다음 입력 레이아웃을 만들려고하는데 그 시점에서 충돌이 발생합니다.CreateInputLayout failed

D3D11_INPUT_ELEMENT_DESC layout[] = 
    { 
     {"POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0}, 
     {"DIMENSIONS", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0}, 
     {"INACTIVE", 0, DXGI_FORMAT_R32_UINT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0}, 
     {"ACTIVE", 0, DXGI_FORMAT_R32_UINT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0}, 
    }; 

이 내가 레이아웃

Assert(_pDevice->CreateInputLayout(layout, _uiNumElements, CompileData.Data, CompileData.uiDataSize, &m_pVertexLayout)) 

이이에 충돌하는 라인을 만드는 방법이다.

누군가가 가능한 이유에 대해 밝히면 누가 좋겠습니까? 건배.

+0

"레이아웃"이 CreateInputLayout 호출에서 어떻게 참조되지 않습니까? 장치 생성시 D3D11 디버그 레이어를 켜면 오류가 발생합니다. 그 오류가 무엇입니까? –

+0

죄송합니다. 더 자세히 설명해야합니다. 내 CreateInputLayout은 함수이며 _Desc로 전달됩니다. 이 경우에는 layout = _Desc입니다. 다른 사람들을 쉽게 파악할 수 있도록 내 질문에 이름을 바꿉니다. – Matt

+0

디버그 레이어를 사용하여 직접 오류를 분류 할 수있었습니다. 문제는 잘못된 .cso 파일을 참조하는 것이 었습니다. 당신의 도움을 주셔서 감사합니다 :) – Matt

답변

0

대답은 Adam Miles의 제안에 따라 D3D11 디버그 레이어를 사용하여 알아 냈습니다. 는 단순히 장치 제작에이를 던졌다 : 그것은 밝혀졌다

#if defined(DEBUG) || defined(_DEBUG) 
    CreateDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; 
#endif 

내가 늙은 .cso 파일이 아닌 가장 최근을 참조했다.