internal unsafe void MarshalTo(Interop.WriteDescriptorSet *pointer) { pointer->SType = StructureType.WriteDescriptorSet; pointer->Next = null; this.DestinationSet?.MarshalTo(&pointer->DestinationSet); //ImageInfo if (this.ImageInfo != null) { var fieldPointer = (Interop.DescriptorImageInfo *)Interop.HeapUtil.AllocateAndClear <Interop.DescriptorImageInfo>(this.ImageInfo.Length); for (int index = 0; index < this.ImageInfo.Length; index++) { this.ImageInfo[index].MarshalTo(&fieldPointer[index]); } pointer->ImageInfo = fieldPointer; } else { pointer->ImageInfo = null; } //BufferInfo if (this.BufferInfo != null) { var fieldPointer = (Interop.DescriptorBufferInfo *)Interop.HeapUtil.AllocateAndClear <Interop.DescriptorBufferInfo>(this.BufferInfo.Length); for (int index = 0; index < this.BufferInfo.Length; index++) { this.BufferInfo[index].MarshalTo(&fieldPointer[index]); } pointer->BufferInfo = fieldPointer; } else { pointer->BufferInfo = null; } //TexelBufferView if (this.TexelBufferView != null) { var fieldPointer = (Interop.BufferView *)Interop.HeapUtil.AllocateAndClear <Interop.BufferView>(this.TexelBufferView.Length); for (int index = 0; index < this.TexelBufferView.Length; index++) { this.TexelBufferView[index].MarshalTo(&fieldPointer[index]); } pointer->TexelBufferView = fieldPointer; } else { pointer->TexelBufferView = null; } pointer->DescriptorCount = (uint)(this.ImageInfo?.Length ?? this.BufferInfo?.Length ?? this.TexelBufferView?.Length ?? 0); pointer->DestinationBinding = this.DestinationBinding; pointer->DestinationArrayElement = this.DestinationArrayElement; pointer->DescriptorType = this.DescriptorType; }
internal WriteDescriptorSet(Interop.WriteDescriptorSet* ptr) { m = ptr; Initialize (); }
public WriteDescriptorSet() { m = (Interop.WriteDescriptorSet*) Interop.Structure.Allocate (typeof (Interop.WriteDescriptorSet)); Initialize (); }