/// <summary> /// /// </summary> public unsafe void BeginRenderPass(SharpVk.RenderPass renderPass, SharpVk.Framebuffer framebuffer, SharpVk.Rect2D renderArea, SharpVk.ClearValue[] clearValues, SharpVk.SubpassContents contents) { try { SharpVk.Interop.RenderPassBeginInfo *marshalledRenderPassBegin = default(SharpVk.Interop.RenderPassBeginInfo *); marshalledRenderPassBegin = (SharpVk.Interop.RenderPassBeginInfo *)(Interop.HeapUtil.Allocate <SharpVk.Interop.RenderPassBeginInfo>()); marshalledRenderPassBegin->SType = StructureType.RenderPassBeginInfo; marshalledRenderPassBegin->Next = null; marshalledRenderPassBegin->RenderPass = renderPass?.handle ?? default(SharpVk.Interop.RenderPass); marshalledRenderPassBegin->Framebuffer = framebuffer?.handle ?? default(SharpVk.Interop.Framebuffer); marshalledRenderPassBegin->RenderArea = renderArea; marshalledRenderPassBegin->ClearValueCount = (uint)(clearValues?.Length ?? 0); if (clearValues != null) { var fieldPointer = (SharpVk.ClearValue *)(Interop.HeapUtil.AllocateAndClear <SharpVk.ClearValue>(clearValues.Length).ToPointer()); for (int index = 0; index < (uint)(clearValues.Length); index++) { fieldPointer[index] = default(SharpVk.ClearValue); } marshalledRenderPassBegin->ClearValues = fieldPointer; } else { marshalledRenderPassBegin->ClearValues = null; } Interop.Commands.vkCmdBeginRenderPass(this.handle, marshalledRenderPassBegin, contents); } finally { Interop.HeapUtil.FreeAll(); } }
/// <summary> /// Query present rectangles for a surface on a physical device. /// </summary> /// <param name="extendedHandle"> /// The PhysicalDevice handle to extend. /// </param> public static unsafe SharpVk.Rect2D[] GetPresentRectangles(this SharpVk.PhysicalDevice extendedHandle, SharpVk.Khronos.Surface surface) { try { SharpVk.Rect2D[] result = default(SharpVk.Rect2D[]); uint rectCount = default(uint); CommandCache commandCache = default(CommandCache); SharpVk.Rect2D * marshalledRects = default(SharpVk.Rect2D *); commandCache = extendedHandle.commandCache; SharpVk.Interop.Khronos.Experimental.VkPhysicalDeviceGetPresentRectanglesDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.Khronos.Experimental.VkPhysicalDeviceGetPresentRectanglesDelegate>("vkGetPhysicalDevicePresentRectanglesKHX", "instance"); Result methodResult = commandDelegate(extendedHandle.handle, surface?.handle ?? default(SharpVk.Interop.Khronos.Surface), &rectCount, marshalledRects); if (SharpVkException.IsError(methodResult)) { throw SharpVkException.Create(methodResult); } marshalledRects = (SharpVk.Rect2D *)(Interop.HeapUtil.Allocate <SharpVk.Rect2D>((uint)(rectCount))); commandDelegate(extendedHandle.handle, surface?.handle ?? default(SharpVk.Interop.Khronos.Surface), &rectCount, marshalledRects); if (marshalledRects != null) { var fieldPointer = new SharpVk.Rect2D[(uint)(rectCount)]; for (int index = 0; index < (uint)(rectCount); index++) { fieldPointer[index] = marshalledRects[index]; } result = fieldPointer; } else { result = null; } return(result); } finally { Interop.HeapUtil.FreeAll(); } }
/// <summary> /// /// </summary> public ClearRect(SharpVk.Rect2D rect, uint baseArrayLayer, uint layerCount) { this.Rect = rect; this.BaseArrayLayer = baseArrayLayer; this.LayerCount = layerCount; }