Exemple #1
0
        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;
        }
Exemple #2
0
 internal WriteDescriptorSet(Interop.WriteDescriptorSet* ptr)
 {
     m = ptr;
     Initialize ();
 }
Exemple #3
0
 public WriteDescriptorSet()
 {
     m = (Interop.WriteDescriptorSet*) Interop.Structure.Allocate (typeof (Interop.WriteDescriptorSet));
     Initialize ();
 }