예제 #1
0
        private VkObjectResult <IVkDevice> CreateDevice(IntPtr data, VkDeviceCreateInfo createInfo, IVkAllocationCallbacks allocator)
        {
            var unmanaged     = (byte *)data;
            var createInfoRaw = createInfo.MarshalDirect(ref unmanaged);
            var pAllocator    = allocator.MarshalIndirect(ref unmanaged);

            VkDevice.HandleType handle;
            var result = Direct.CreateDevice(Handle, &createInfoRaw, pAllocator, &handle);
            var device = result == VkResult.Success ? new VkDevice(this, handle, allocator) : null;

            return(new VkObjectResult <IVkDevice>(result, device));
        }
예제 #2
0
        public static VkDeviceCreateInfo.Raw *MarshalIndirect(this VkDeviceCreateInfo s, ref byte *unmanaged)
        {
            if (s == null)
            {
                return((VkDeviceCreateInfo.Raw *) 0);
            }
            var result = (VkDeviceCreateInfo.Raw *)unmanaged;

            unmanaged += VkDeviceCreateInfo.Raw.SizeInBytes;
            *result = s.MarshalDirect(ref unmanaged);
            return(result);
        }
예제 #3
0
 private VkObjectResult<IVkDevice> CreateDevice(IntPtr data, VkDeviceCreateInfo createInfo, IVkAllocationCallbacks allocator)
 {
     var unmanaged = (byte*)data;
     var createInfoRaw = createInfo.MarshalDirect(ref unmanaged);
     var pAllocator = allocator.MarshalIndirect(ref unmanaged);
     VkDevice.HandleType handle;
     var result = Direct.CreateDevice(Handle, &createInfoRaw, pAllocator, &handle);
     var device = result == VkResult.Success ? new VkDevice(this, handle, allocator) : null;
     return new VkObjectResult<IVkDevice>(result, device);
 }