public void CmdSetViewport(UInt32 firstViewport, MgViewport[] pViewports) { var viewportHandle = GCHandle.Alloc(pViewports, GCHandleType.Pinned); try { unsafe { var viewportCount = (UInt32)pViewports.Length; var pinnedObject = viewportHandle.AddrOfPinnedObject(); var viewports = (MgViewport *)pinnedObject.ToPointer(); Interops.vkCmdSetViewport(this.Handle, firstViewport, viewportCount, viewports); } } finally { viewportHandle.Free(); } }