渲染自定义模型时出现c++Directx 11设备上下文错误

c++ Directx 11 Devicecontext error when rendering custom model

本文关键字:上下文 错误 c++Directx 自定义 模型      更新时间:2023-10-16

每当我试图在程序中呈现自定义模型时,程序就会崩溃当我尝试在调试模式下运行它时,它会将我指向

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

奇怪的是,我有两个不同的模型存储在两个不同文件中。第一个模型可以毫无问题地渲染所有文件——这也是更"高级"的模型,但现在我正在尝试渲染一个长方体,一个非常简单的长方体。但每当我试图渲染这个框时,我的程序就会崩溃,并最终出现在那一行。我不知道我做错了什么,也不知道是什么原因造成的

我很想知道是什么造成的IASetVertexBuffers(0,1,&m_vertexBuffer,&跨步,&偏移)崩溃

首先,请确保已正确初始化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;
}