void InitializePlatformDependent()
        {
            // static dynamic descriptor heap manager is not allocated
            if (m_DynamicDescriptorHeapManager == null)
            {
                m_DynamicDescriptorHeapManager = new H1DynamicDescriptorHeapManager();
            }

            // platform-dependent member variables allocations
        }
        public DescriptorHeap GetHeap()
        {
            H1DynamicDescriptorHeapManager dynamicDescriptorHeapManagerDX12 = m_DynamicDescriptorHeapManager;

            if (m_CurrDescriptorHeapRef == null)
            {
                m_CurrDescriptorHeapRef = dynamicDescriptorHeapManagerDX12.RequestDescriptorHeap();
                m_FirstDescriptor       = new H1DescriptorHandle()
                {
                    CpuHandle = m_CurrDescriptorHeapRef.CPUDescriptorHandleForHeapStart,
                    GpuHandle = m_CurrDescriptorHeapRef.GPUDescriptorHandleForHeapStart,
                };
            }

            return(m_CurrDescriptorHeapRef);
        }