2014-01-30 4 views
0

Я провел много времени от DirectX11, поэтому я не знаком с ошибкой, которую я получаю. Я создаю описание макета, а затем перехожу к созданию макета ввода, однако он падает в этом месте.CreateInputLayout failing

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? Если вы включите слой Debug D3D11 при создании устройства, он даст вам сообщение об ошибке. Что это за ошибка? –

+0

Извините, я должен был объяснить дальше. My CreateInputLayout является функцией и передается как _Desc. расположение = _Desc в этом случае. Я переименую его в свой вопрос, так что легче понять других – Matt

+0

Используя слой отладки, мне удалось самостоятельно разобраться с ошибкой. Проблема в том, что я ссылался на неправильный файл .cso. Спасибо за вашу помощь :) – Matt

ответ

0

Ответ был выяснен с использованием слоя отладки D3D11, как было предложено Адамом Майлсом. Просто швырнул это в создании устройства:

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

Оказалось, я ссылки на старый файл .cso и не самая последняя.