Я слежу за кодами раздела 6 «Программирование игр с использованием DirectX12».
Но в ID3DDevice :: CreateConstantBufferView я обнаружил ошибку D3D12.
D3D12 ERROR: ID3D12Device :: CreateConstantBufferView: pDes c -> BufferLocation + SizeInBytes - 1 (0x00000000087b00ff) превышает конец диапазона виртуальных адресов ресурса (0x0DA64DA0: 'ID3D12Resource Object', диапазон виртуального процессора GPU: 0x00000000087b0000 - 0x00000000087b003b003). [STATE_CREATION ERROR # 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;
}
Что происходит ошибка и как ее исправить?