Beispiel #1
0
 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);
        }