internal unsafe void MarshalTo(SharpVk.Interop.DescriptorSetLayoutBinding *pointer) { pointer->Binding = this.Binding; pointer->DescriptorType = this.DescriptorType; if (this.DescriptorCount != null) { pointer->DescriptorCount = this.DescriptorCount.Value; } else { pointer->DescriptorCount = (uint)(this.ImmutableSamplers?.Length ?? 0); } pointer->StageFlags = this.StageFlags; if (this.ImmutableSamplers != null) { var fieldPointer = (SharpVk.Interop.Sampler *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.Sampler>(this.ImmutableSamplers.Length).ToPointer()); for (int index = 0; index < (uint)(this.ImmutableSamplers.Length); index++) { fieldPointer[index] = this.ImmutableSamplers[index]?.handle ?? default(SharpVk.Interop.Sampler); } pointer->ImmutableSamplers = fieldPointer; } else { pointer->ImmutableSamplers = null; } }
/// <summary> /// /// </summary> /// <param name="pointer"> /// </param> internal static unsafe DescriptorSetLayoutBinding MarshalFrom(SharpVk.Interop.DescriptorSetLayoutBinding *pointer) { DescriptorSetLayoutBinding result = default(DescriptorSetLayoutBinding); result.Binding = pointer->Binding; result.DescriptorType = pointer->DescriptorType; result.StageFlags = pointer->StageFlags; if (pointer->ImmutableSamplers != null) { var fieldPointer = new SharpVk.Sampler[(uint)(pointer->DescriptorCount)]; for (int index = 0; index < (uint)(pointer->DescriptorCount); index++) { fieldPointer[index] = new SharpVk.Sampler(default(SharpVk.Device), pointer->ImmutableSamplers[index]); } result.ImmutableSamplers = fieldPointer; } else { result.ImmutableSamplers = null; } return(result); }