/// <summary>
 ///
 /// </summary>
 internal unsafe void MarshalTo(SharpVk.Interop.NVidia.CoarseSampleOrderCustom *pointer)
 {
     pointer->ShadingRate         = this.ShadingRate;
     pointer->SampleCount         = this.SampleCount;
     pointer->SampleLocationCount = (uint)(Interop.HeapUtil.GetLength(this.SampleLocations));
     if (this.SampleLocations != null)
     {
         var fieldPointer = (SharpVk.NVidia.CoarseSampleLocation *)(Interop.HeapUtil.AllocateAndClear <SharpVk.NVidia.CoarseSampleLocation>(this.SampleLocations.Length).ToPointer());
         for (int index = 0; index < (uint)(this.SampleLocations.Length); index++)
         {
             fieldPointer[index] = this.SampleLocations[index];
         }
         pointer->SampleLocations = fieldPointer;
     }
     else
     {
         pointer->SampleLocations = null;
     }
 }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        internal static unsafe CoarseSampleOrderCustom MarshalFrom(SharpVk.Interop.NVidia.CoarseSampleOrderCustom *pointer)
        {
            CoarseSampleOrderCustom result = default(CoarseSampleOrderCustom);

            result.ShadingRate = pointer->ShadingRate;
            result.SampleCount = pointer->SampleCount;
            if (pointer->SampleLocations != null)
            {
                var fieldPointer = new SharpVk.NVidia.CoarseSampleLocation[(uint)(pointer->SampleLocationCount)];
                for (int index = 0; index < (uint)(pointer->SampleLocationCount); index++)
                {
                    fieldPointer[index] = pointer->SampleLocations[index];
                }
                result.SampleLocations = fieldPointer;
            }
            else
            {
                result.SampleLocations = null;
            }
            return(result);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="extendedHandle">
 /// The CommandBuffer handle to extend.
 /// </param>
 /// <param name="sampleOrderType">
 /// </param>
 /// <param name="customSampleOrders">
 /// </param>
 public static unsafe void SetCoarseSampleOrder(this SharpVk.CommandBuffer extendedHandle, SharpVk.NVidia.CoarseSampleOrderType sampleOrderType, ArrayProxy <SharpVk.NVidia.CoarseSampleOrderCustom>?customSampleOrders)
 {
     try
     {
         CommandCache commandCache = default(CommandCache);
         SharpVk.Interop.NVidia.CoarseSampleOrderCustom *marshalledCustomSampleOrders = default(SharpVk.Interop.NVidia.CoarseSampleOrderCustom *);
         commandCache = extendedHandle.commandCache;
         if (customSampleOrders.IsNull())
         {
             marshalledCustomSampleOrders = null;
         }
         else
         {
             if (customSampleOrders.Value.Contents == ProxyContents.Single)
             {
                 marshalledCustomSampleOrders = (SharpVk.Interop.NVidia.CoarseSampleOrderCustom *)(Interop.HeapUtil.Allocate <SharpVk.Interop.NVidia.CoarseSampleOrderCustom>());
                 customSampleOrders.Value.GetSingleValue().MarshalTo(&*(SharpVk.Interop.NVidia.CoarseSampleOrderCustom *)(marshalledCustomSampleOrders));
             }
             else
             {
                 var fieldPointer = (SharpVk.Interop.NVidia.CoarseSampleOrderCustom *)(Interop.HeapUtil.AllocateAndClear <SharpVk.Interop.NVidia.CoarseSampleOrderCustom>(Interop.HeapUtil.GetLength(customSampleOrders.Value)).ToPointer());
                 for (int index = 0; index < (uint)(Interop.HeapUtil.GetLength(customSampleOrders.Value)); index++)
                 {
                     customSampleOrders.Value[index].MarshalTo(&fieldPointer[index]);
                 }
                 marshalledCustomSampleOrders = fieldPointer;
             }
         }
         SharpVk.Interop.NVidia.VkCommandBufferSetCoarseSampleOrderDelegate commandDelegate = commandCache.Cache.vkCmdSetCoarseSampleOrderNV;
         commandDelegate(extendedHandle.handle, sampleOrderType, (uint)(Interop.HeapUtil.GetLength(customSampleOrders)), marshalledCustomSampleOrders);
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }