在DirectX12,渲染使用世界單一統一緩存相當於在不同位置的多個對象的變換,如:Vulkan:有沒有辦法在DirectX12中的不同位置繪製多個對象?
// Basic simplified pseudocode
SetRootSignature();
SetPrimitiveTopology();
SetPipelineState();
SetDepthStencilTarget();
SetViewportAndScissor();
for (auto object : objects)
{
SetIndexBuffer();
SetVertexBuffer();
struct VSConstants
{
QEDx12::Math::Matrix4 modelToProjection;
} vsConstants;
vsConstants.modelToProjection = ViewProjMat * object->GetWorldProj();
SetDynamicConstantBufferView(0, sizeof(vsConstants), &vsConstants);
DrawIndexed();
}
然而,福爾康,如果你做一個單一的統一的緩存類似的東西全部,
for (auto object : objects)
{
SetIndexBuffer();
SetVertexBuffer();
UploadUniformBuffer(object->GetWorldProj());
DrawIndexed();
}
有沒有一種方法來繪製多個對象,在福爾康一個統一的緩存,就像在DirectX12:對象在過去的世界矩陣的位置呈現?
我知道Sascha Willem的動態統一緩衝區示例(https://github.com/SaschaWillems/Vulkan/tree/master/dynamicuniformbuffer),他將許多矩陣包裝在一個大的統一緩衝區中,雖然有用,但並不完全符合我的要求。
在此先感謝您的幫助。