C++ Directx 11 Devicecontext ошибка при рендеринге пользовательской модели

Всякий раз, когда я пытаюсь отобразить пользовательскую модель в моей программе, происходит сбой программы. Когда я пытаюсь запустить ее в режиме отладки, она указывает на

deviceContext->IASetVertexBuffers(0, 1, &m_vertexBuffer, &stride, &offset);

Странно то, что у меня две разные модели хранятся в двух разных файлах. Первая модель рендерит все файлы без проблем, это также более "продвинутая" модель, но сейчас я пытаюсь визуализировать блок, очень простой блок. Но всякий раз, когда я пытаюсь отобразить это окно, мои программы вылетают и оказываются на этой линии. И я не знаю, что я делаю неправильно или что может быть причиной.

Я хотел бы знать, что может сделать это "IASetVertexBuffers(0, 1, &m_vertexBuffer, &stride, &offset);" авария

1 ответ

Прежде всего, убедитесь, что вы правильно инициализировали DirectX. Если вы сделали это, и ID3D11DeviceContext работает должным образом, я использую этот следующий код.

MyStructure:

struct D3D11TextureVertexType
{
    XMFLOAT3 Position;
    XMFLOAT2 TX;
};

Часть моей функции, которая использует deviceContext->IASetVertexBuffers..

hr = m_pd3dImmediateContext->Map(MyID3D11Buffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
if (FAILED(hr)) return hr;

pData = (D3D11TextureVertexType*)mappedResource.pData;
memcpy(pData, MYOBJECTVERTICES/*this is D3D11TextureVertexType*/, sizeof(D3D11TextureVertexType) * VertexCount);

m_pd3dImmediateContext->Unmap(MyID3D11Buffer, 0);

stride = sizeof(D3D11TextureVertexType);
offset = 0;

m_pd3dImmediateContext->IASetVertexBuffers(0, 1, &MyID3D11Buffer, &stride, &offset);
m_pd3dImmediateContext->IASetIndexBuffer(m_AdjRectangleIBuffer, DXGI_FORMAT_R32_UINT, 0);
m_pd3dImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);

result = m_TextureShader->Render(m_pd3dImmediateContext, 6, worldMatrix, viewMatrix, orthoMatrix, m_Textures[Q.textureID]->pSRV);           if (!result)
{
    return S_FALSE;
}
Другие вопросы по тегам