예제 #1
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void UnregisterObjects(ArrayProxy <SharpVk.NVidia.Experimental.ObjectEntryType>?objectEntryTypes, ArrayProxy <uint>?objectIndices)
 {
     try
     {
         SharpVk.NVidia.Experimental.ObjectEntryType *marshalledObjectEntryTypes = default(SharpVk.NVidia.Experimental.ObjectEntryType *);
         uint *marshalledObjectIndices = default(uint *);
         if (objectEntryTypes.IsNull())
         {
             marshalledObjectEntryTypes = null;
         }
         else
         {
             if (objectEntryTypes.Value.Contents == ProxyContents.Single)
             {
                 marshalledObjectEntryTypes = (SharpVk.NVidia.Experimental.ObjectEntryType *)(Interop.HeapUtil.Allocate <SharpVk.NVidia.Experimental.ObjectEntryType>());
                 *(SharpVk.NVidia.Experimental.ObjectEntryType *)(marshalledObjectEntryTypes) = objectEntryTypes.Value.GetSingleValue();
             }
             else
             {
                 var fieldPointer = (SharpVk.NVidia.Experimental.ObjectEntryType *)(Interop.HeapUtil.AllocateAndClear <SharpVk.NVidia.Experimental.ObjectEntryType>(Interop.HeapUtil.GetLength(objectEntryTypes.Value)).ToPointer());
                 for (int index = 0; index < (uint)(Interop.HeapUtil.GetLength(objectEntryTypes.Value)); index++)
                 {
                     fieldPointer[index] = objectEntryTypes.Value[index];
                 }
                 marshalledObjectEntryTypes = fieldPointer;
             }
         }
         if (objectIndices.IsNull())
         {
             marshalledObjectIndices = null;
         }
         else
         {
             if (objectIndices.Value.Contents == ProxyContents.Single)
             {
                 marshalledObjectIndices            = (uint *)(Interop.HeapUtil.Allocate <uint>());
                 *(uint *)(marshalledObjectIndices) = objectIndices.Value.GetSingleValue();
             }
             else
             {
                 var fieldPointer = (uint *)(Interop.HeapUtil.AllocateAndClear <uint>(Interop.HeapUtil.GetLength(objectIndices.Value)).ToPointer());
                 for (int index = 0; index < (uint)(Interop.HeapUtil.GetLength(objectIndices.Value)); index++)
                 {
                     fieldPointer[index] = objectIndices.Value[index];
                 }
                 marshalledObjectIndices = fieldPointer;
             }
         }
         SharpVk.Interop.NVidia.Experimental.VkObjectTableNVXUnregisterObjectsDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.NVidia.Experimental.VkObjectTableNVXUnregisterObjectsDelegate>("vkUnregisterObjectsNVX", "device");
         Result methodResult = commandDelegate(this.parent.handle, this.handle, (uint)(Interop.HeapUtil.GetLength(objectEntryTypes)), marshalledObjectEntryTypes, marshalledObjectIndices);
         if (SharpVkException.IsError(methodResult))
         {
             throw SharpVkException.Create(methodResult);
         }
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }
예제 #2
0
 /// <summary>
 ///
 /// </summary>
 public unsafe void UnregisterObjects(SharpVk.NVidia.Experimental.ObjectEntryType[] objectEntryTypes, uint[] objectIndices)
 {
     try
     {
         SharpVk.NVidia.Experimental.ObjectEntryType *marshalledObjectEntryTypes = default(SharpVk.NVidia.Experimental.ObjectEntryType *);
         uint *marshalledObjectIndices = default(uint *);
         if (objectEntryTypes != null)
         {
             var fieldPointer = (SharpVk.NVidia.Experimental.ObjectEntryType *)(Interop.HeapUtil.AllocateAndClear <SharpVk.NVidia.Experimental.ObjectEntryType>(objectEntryTypes.Length).ToPointer());
             for (int index = 0; index < (uint)(objectEntryTypes.Length); index++)
             {
                 fieldPointer[index] = objectEntryTypes[index];
             }
             marshalledObjectEntryTypes = fieldPointer;
         }
         else
         {
             marshalledObjectEntryTypes = null;
         }
         if (objectIndices != null)
         {
             var fieldPointer = (uint *)(Interop.HeapUtil.AllocateAndClear <uint>(objectIndices.Length).ToPointer());
             for (int index = 0; index < (uint)(objectIndices.Length); index++)
             {
                 fieldPointer[index] = objectIndices[index];
             }
             marshalledObjectIndices = fieldPointer;
         }
         else
         {
             marshalledObjectIndices = null;
         }
         SharpVk.Interop.NVidia.Experimental.VkObjectTableNVXUnregisterObjectsDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.NVidia.Experimental.VkObjectTableNVXUnregisterObjectsDelegate>("vkUnregisterObjectsNVX", "instance");
         Result methodResult = commandDelegate(this.parent.handle, this.handle, (uint)(objectEntryTypes?.Length ?? 0), marshalledObjectEntryTypes, marshalledObjectIndices);
         if (SharpVkException.IsError(methodResult))
         {
             throw SharpVkException.Create(methodResult);
         }
     }
     finally
     {
         Interop.HeapUtil.FreeAll();
     }
 }