public void Warp() { SaveCursorPositionIntern(); var data = GetWarpData(); if (!Helpers.IsDevComputer) { // TODO Marco: überarbeiten //var ee = NvApi.InitWarp(_projectors[0].DisplayId, data.Vertices0, _projectors[1].DisplayId, data.Vertices1, data.NumVertices); //HandleNvApiError(ee); //ee = NvApi.InitWarp(_projectors[1].DisplayId, data.Vertices1, _projectors[1].DisplayId, data.Vertices1, data.NumVertices); //HandleNvApiError(ee); //var errorCode = NvApi.Warp(_projectors[0].DisplayId, data.Vertices0, data.NumVertices); //HandleNvApiError(errorCode); //errorCode = NvApi.Warp(_projectors[1].DisplayId, data.Vertices1, data.NumVertices); //HandleNvApiError(errorCode); var displayIds = new[] { _projectors[0].DisplayId, _projectors[1].DisplayId }; var errorCode = NvApi.WarpMultiple(displayIds, displayIds.Length, data.Vertices0.Concat(data.Vertices1).ToArray(), data.NumVertices); HandleNvApiError(errorCode); //NvApi.InitWarp(data.Vertices0, data.Vertices1, data.NumVertices); } RestoreCursorPosition?.Invoke(); }
public void WarpBlend(bool generateBlendImages) { SaveCursorPositionIntern(); var warpData = GetWarpData(); var blendData = GetBlendData(); if (generateBlendImages) { GenerateBlendImages(blendData); } if (!Helpers.IsDevComputer) { //var errorCode = NvApi.Blend(_projectors[0].DisplayId, blendData.blend0, blendData.offset0, blendData.width, _projectors[0].Resolution.Height); //HandleNvApiError(errorCode); //errorCode = NvApi.Blend(_projectors[1].DisplayId, blendData.blend1, blendData.offset1, blendData.width, _projectors[1].Resolution.Height); //HandleNvApiError(errorCode); //errorCode = NvApi.Warp(_projectors[0].DisplayId, warpData.Vertices0, warpData.NumVertices); //HandleNvApiError(errorCode); //errorCode = NvApi.Warp(_projectors[1].DisplayId, warpData.Vertices1, warpData.NumVertices); //HandleNvApiError(errorCode); //NvApi.WarpBlend(warpData.Vertices0, warpData.NumVertices, blendData.blend, blendData.blend1, blendData.offset0, blendData.offset1, blendData.width); var displayIds = new[] { _projectors[0].DisplayId, _projectors[1].DisplayId }; var status = NvApi.UnWarp(displayIds, displayIds.Length); HandleNvApiError(status); status = NvApi.UnBlend(displayIds, displayIds.Length, blendData.Width, _projectors[0].Resolution.Height); HandleNvApiError(status); status = NvApi.WarpMultiple(displayIds, displayIds.Length, warpData.Vertices0.Concat(warpData.Vertices1).ToArray(), warpData.NumVertices); HandleNvApiError(status); status = NvApi.Blend(_projectors[0].DisplayId, blendData.Blend0, blendData.Offset0, blendData.Width, _projectors[0].Resolution.Height); HandleNvApiError(status); status = NvApi.Blend(_projectors[1].DisplayId, blendData.Blend1, blendData.Offset1, blendData.Width, _projectors[1].Resolution.Height); HandleNvApiError(status); } RestoreCursorPositionIntern(); }