예제 #1
0
        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();
        }
예제 #2
0
        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();
        }