渲染自定义模型时出现c ++ Directx 11 Devicecontext错误

时间:2014-11-12 19:30:12

标签: c++ directx-11

每当我尝试在程序中渲染自定义模型时程序崩溃 当我尝试在调试模式下运行它时,它指向

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

奇怪的是,我有两个不同的模型存储在两个不同的文件中。 第一个模型渲染所有文件没有问题,这也是更“高级”的模型,但现在我正在尝试渲染一个盒子,一个非常简单的盒子。 但每当我尝试渲染此框时,我的程序崩溃并最终在该行上。 我不知道我做错了什么,或者是什么导致它。

我想知道是什么可以做到这一点 “IASetVertexBuffers(0,1,& m_vertexBuffer,& stride,& offset);” 碰撞

1 个答案:

答案 0 :(得分:0)

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