Fix CreateDescriptorTable: pass descriptor ranges array instead of using static

This commit is contained in:
2026-03-17 01:03:13 +08:00
parent 988f94eb29
commit 73627f62f4
2 changed files with 4 additions and 11 deletions

View File

@@ -91,19 +91,12 @@ D3D12_ROOT_PARAMETER D3D12RootSignature::Create32BitConstants(uint32_t shaderReg
return param;
}
D3D12_ROOT_PARAMETER D3D12RootSignature::CreateDescriptorTable(uint32_t shaderRegister, uint32_t numDescriptors, D3D12_DESCRIPTOR_RANGE_TYPE rangeType, ShaderVisibility visibility, uint32_t registerSpace) {
static D3D12_DESCRIPTOR_RANGE range;
range.RangeType = rangeType;
range.NumDescriptors = numDescriptors;
range.BaseShaderRegister = shaderRegister;
range.RegisterSpace = registerSpace;
range.OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
D3D12_ROOT_PARAMETER D3D12RootSignature::CreateDescriptorTable(uint32_t numRanges, const D3D12_DESCRIPTOR_RANGE* ranges, ShaderVisibility visibility) {
D3D12_ROOT_PARAMETER param = {};
param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
param.ShaderVisibility = ToD3D12(visibility);
param.DescriptorTable.NumDescriptorRanges = 1;
param.DescriptorTable.pDescriptorRanges = ⦥
param.DescriptorTable.NumDescriptorRanges = numRanges;
param.DescriptorTable.pDescriptorRanges = ranges;
return param;
}