我正在遵循“使用 DirectX12 进行游戏编程”ch.6 代码。
但在 ID3DDevice::CreateConstantBufferView 中,我发现 D3D12 错误。
D3D12 错误:ID3D12Device::CreateConstantBufferView:pDesc->BufferLocation + SizeInBytes - 1 (0x00000000087b00ff) 超出资源虚拟地址范围的末尾(0x0DA64DA0:'未命名 ID3D12Resource 对象',GPU VA 范围:0x00000000087b0000 - 0x000 00000087b003f)。 [状态创建错误#649:CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE]
这是我的代码。
void BoxApp::BuildConstantBuffers()
{
mObjectCB = std::make_unique<UploadBuffer<ObjectConstants>>(md3dDevice.Get(), 1, true);
UINT objCBByteSize = calcConstantBufferByteSize(sizeof(ObjectConstants));
D3D12_GPU_VIRTUAL_ADDRESS cbAddress = mObjectCB->Resource()->GetGPUVirtualAddress();
int boxCBufIndex = 0;
cbAddress += static_cast<UINT64>(boxCBufIndex) * static_cast<UINT64>(objCBByteSize);
D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc;
cbvDesc.BufferLocation = cbAddress;
cbvDesc.SizeInBytes = calcConstantBufferByteSize(sizeof(ObjectConstants));
md3dDevice->CreateConstantBufferView(&cbvDesc, mCbvHeap->GetCPUDescriptorHandleForHeapStart());
}
static UINT calcConstantBufferByteSize(UINT byteSize)
{
return (byteSize + 255) & ~255;
}
出现什么错误,如何修复?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)