每当我尝试在程序中渲染自定义模型时程序崩溃 当我尝试在调试模式下运行它时,它指向
deviceContext->IASetVertexBuffers(0, 1, &m_vertexBuffer, &stride, &offset);
奇怪的是,我有两个不同的模型存储在两个不同的文件中。 第一个模型渲染所有文件没有问题,这也是更“高级”的模型,但现在我正在尝试渲染一个盒子,一个非常简单的盒子。 但每当我尝试渲染此框时,我的程序崩溃并最终在该行上。 我不知道我做错了什么,或者是什么导致它。
我想知道是什么可以做到这一点 “IASetVertexBuffers(0,1,& m_vertexBuffer,& stride,& offset);” 碰撞
答案 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;
}