【发布时间】:2020-10-25 07:24:35
【问题描述】:
所以基本上我正在尝试学习 Direct3D 11。我已经让我的程序运行并成功导入了 OBJ 文件。但是现在我决定使用向量而不是数组,因为我可能想要更改我加载的模型,并希望它自动分配所需的内存。无论如何,它现在似乎只显示模型的一半,我相信它与 ByteWidth 和/或步幅有关,但我现在尝试了很多不同的组合和不同的设置,我觉得我在绕圈子,我确信它在这个代码块中:
ID3D11Buffer *pVertexBuffer;
D3D11_BUFFER_DESC bd;
bd.BindFlags = D3D11_BIND_VERTEX_BUFFER;
bd.ByteWidth = vertices.size() * sizeof(Vertex);
bd.CPUAccessFlags = 0u;
bd.MiscFlags = 0u;
bd.Usage = D3D11_USAGE_DEFAULT;
bd.StructureByteStride = sizeof(Vertex);
D3D11_SUBRESOURCE_DATA sd = {};
sd.pSysMem = vertices.data();
dev->CreateBuffer(&bd, &sd, &pVertexBuffer);
const UINT stride = sizeof(Vertex);
const UINT offset = 0u;
devcon->IASetVertexBuffers(0u, 1u, &pVertexBuffer, &stride, &offset);
ID3D11Buffer *pIndexBuffer;
D3D11_BUFFER_DESC ibd;
ibd.BindFlags = D3D11_BIND_INDEX_BUFFER;
ibd.ByteWidth = indices.size() * sizeof(Index);
ibd.CPUAccessFlags = 0u;
ibd.MiscFlags = 0u;
ibd.Usage = D3D11_USAGE_DEFAULT;
ibd.StructureByteStride = sizeof(Index);
D3D11_SUBRESOURCE_DATA isd = {};
isd.pSysMem = indices.data();
dev->CreateBuffer(&ibd, &isd, &pIndexBuffer);
devcon->IASetIndexBuffer(pIndexBuffer, DXGI_FORMAT_R16_UINT, 0u);
作为参考,我已经粘贴了完整的代码:here
【问题讨论】:
-
您需要检查所有 HRESULT 是否成功。
标签: c++ direct3d11