/// <summary> /// /// </summary> /// <param name="pointer"> /// </param> internal static unsafe WriteDescriptorSetAccelerationStructure MarshalFrom(SharpVk.Interop.NVidia.WriteDescriptorSetAccelerationStructure *pointer) { WriteDescriptorSetAccelerationStructure result = default(WriteDescriptorSetAccelerationStructure); if (pointer->AccelerationStructures != null) { var fieldPointer = new SharpVk.NVidia.AccelerationStructure[(uint)(pointer->AccelerationStructureCount)]; for (int index = 0; index < (uint)(pointer->AccelerationStructureCount); index++) { fieldPointer[index] = new SharpVk.NVidia.AccelerationStructure(default(SharpVk.Device), pointer->AccelerationStructures[index]); } result.AccelerationStructures = fieldPointer; } else { result.AccelerationStructures = null; } return(result); }
/// <summary> /// /// </summary> /// <param name="pointer"> /// </param> internal unsafe void MarshalTo(SharpVk.Interop.NVidia.WriteDescriptorSetAccelerationStructure *pointer) { pointer->SType = StructureType.WriteDescriptorSetAccelerationStructure; pointer->Next = null; pointer->AccelerationStructureCount = (uint)(Interop.HeapUtil.GetLength(this.AccelerationStructures)); if (this.AccelerationStructures != null) { var fieldPointer = (SharpVk.Interop.NVidia.AccelerationStructure *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.NVidia.AccelerationStructure>(this.AccelerationStructures.Length).ToPointer()); for (int index = 0; index < (uint)(this.AccelerationStructures.Length); index++) { fieldPointer[index] = this.AccelerationStructures[index]?.handle ?? default(SharpVk.Interop.NVidia.AccelerationStructure); } pointer->AccelerationStructures = fieldPointer; } else { pointer->AccelerationStructures = null; } }