diff --git a/engine/src/RHI/D3D12/D3D12Device.cpp b/engine/src/RHI/D3D12/D3D12Device.cpp index 50f8b45a..cd1332e3 100644 --- a/engine/src/RHI/D3D12/D3D12Device.cpp +++ b/engine/src/RHI/D3D12/D3D12Device.cpp @@ -1,5 +1,7 @@ #include "D3D12RHI.h" +#include "D3D12Resources.h" #include +#include #include #include #include @@ -717,10 +719,10 @@ void D3D12CommandList::SetPrimitiveTopology(PrimitiveTopology topology) { void D3D12CommandList::SetVertexBuffer(uint32_t slot, IResource* buffer, uint32_t offset, uint32_t stride) { if (buffer) { - D3D12Resource* d3dBuffer = static_cast(buffer); + D3D12VertexBuffer* vb = static_cast(buffer); D3D12_VERTEX_BUFFER_VIEW vbView = {}; - vbView.BufferLocation = d3dBuffer->GetNative()->GetGPUVirtualAddress() + offset; - vbView.SizeInBytes = (UINT)stride; + vbView.BufferLocation = vb->GetNative()->GetGPUVirtualAddress() + offset; + vbView.SizeInBytes = (UINT)vb->GetDesc().size; vbView.StrideInBytes = stride; m_commandList->IASetVertexBuffers(slot, 1, &vbView); } @@ -728,11 +730,11 @@ void D3D12CommandList::SetVertexBuffer(uint32_t slot, IResource* buffer, uint32_ void D3D12CommandList::SetIndexBuffer(IResource* buffer, uint32_t offset) { if (buffer) { - D3D12Resource* d3dBuffer = static_cast(buffer); + D3D12IndexBuffer* ib = static_cast(buffer); D3D12_INDEX_BUFFER_VIEW ibView = {}; - ibView.BufferLocation = d3dBuffer->GetNative()->GetGPUVirtualAddress() + offset; + ibView.BufferLocation = ib->GetNative()->GetGPUVirtualAddress() + offset; ibView.Format = DXGI_FORMAT_R32_UINT; - ibView.SizeInBytes = 0; + ibView.SizeInBytes = (UINT)ib->GetDesc().size; m_commandList->IASetIndexBuffer(&ibView); } } diff --git a/engine/src/RHI/D3D12/D3D12RenderContext.cpp b/engine/src/RHI/D3D12/D3D12RenderContext.cpp index 5411f4ea..aaed20fd 100644 --- a/engine/src/RHI/D3D12/D3D12RenderContext.cpp +++ b/engine/src/RHI/D3D12/D3D12RenderContext.cpp @@ -101,9 +101,13 @@ void RenderContext::EndFrame() { queue->ExecuteCommandLists(&cmdListPtr, 1); EngineLog("EndFrame: after Execute"); + EngineLog("EndFrame: before Signal"); m_fenceValue++; - queue->Signal(m_fence, m_fenceValue); - EngineLog("EndFrame: before Wait, fenceValue=%llu", (unsigned long long)m_fenceValue); + D3D12Fence* d3d12Fence = static_cast(m_fence); + queue->Signal(d3d12Fence->GetNativeFence(), m_fenceValue); + EngineLog("EndFrame: after Signal"); + + EngineLog("EndFrame: before Wait"); m_fence->Wait(m_fenceValue); EngineLog("EndFrame: after Wait"); } diff --git a/engine/src/RHI/D3D12/D3D12StaticMeshComponent.cpp b/engine/src/RHI/D3D12/D3D12StaticMeshComponent.cpp index f17a26a5..23e6707a 100644 --- a/engine/src/RHI/D3D12/D3D12StaticMeshComponent.cpp +++ b/engine/src/RHI/D3D12/D3D12StaticMeshComponent.cpp @@ -70,16 +70,24 @@ bool StaticMeshComponent::Initialize(ICommandList* commandList, const char* file void StaticMeshComponent::Render(ICommandList* commandList) { if (!m_vertexBuffer) return; + printf("StaticMesh::Render - before SetVertexBuffer\n"); commandList->SetVertexBuffer(0, m_vertexBuffer, 0, sizeof(MeshVertex)); + printf("StaticMesh::Render - after SetVertexBuffer\n"); if (m_subMeshes.empty()) { + printf("StaticMesh::Render - before DrawInstanced\n"); commandList->DrawInstanced(m_vertexCount, 1, 0, 0); + printf("StaticMesh::Render - after DrawInstanced\n"); } else { for (auto& pair : m_subMeshes) { SubMesh* submesh = pair.second; + printf("StaticMesh::Render - before SetIndexBuffer\n"); commandList->SetIndexBuffer(submesh->indexBuffer, 0); + printf("StaticMesh::Render - after SetIndexBuffer\n"); + printf("StaticMesh::Render - before DrawIndexedInstanced\n"); commandList->DrawIndexedInstanced(submesh->indexCount, 1, 0, 0, 0); + printf("StaticMesh::Render - after DrawIndexedInstanced\n"); } } }