Ejemplo n.º 1
0
        void Awake()
        {
            renderWidth  = 2048;
            renderHeight = 1024;

#if !UNITY_EDITOR
            var threadId = GetCurrentThreadId();
            EnumThreadWindows(threadId, (hWnd, lParam) =>
            {
                var classText = new StringBuilder(UnityWindowClassName.Length + 1);
                GetClassName(hWnd, classText, classText.Capacity);
                if (classText.ToString() != UnityWindowClassName)
                {
                    return(true);
                }
                _windowHandle = hWnd;
                return(false);
            }, IntPtr.Zero);
#endif
            bool result = false;
            HMDPresent(ref result);

            ThreeGlassesUtils.Log("ThreeGlassesHeadDisplayLife init");

            uint[] buffsize = { renderWidth, renderHeight };
            ThreeGlassesDllInterface.GetNativeRenderSize(buffsize);
            renderWidth  = (uint)(scaleRenderSize * buffsize[0]);
            renderHeight = (uint)(scaleRenderSize * buffsize[1]);

            renderWidth  = renderWidth - (renderWidth % 16);
            renderHeight = renderHeight - (renderHeight % 16);

            ThreeGlassesDllInterface.SZVRPluginInit(
                (uint)(AsynchronousProjection ? 0 : 1),
                renderWidth,
                renderHeight);

#if !UNITY_EDITOR
            if (_windowHandle != IntPtr.Zero)
            {
                ShowWindow(_windowHandle, SW_SHOWNORMAL);
                SetForegroundWindow(_windowHandle);
            }
#endif
        }
Ejemplo n.º 2
0
        public void Resume()
        {
            // init plugin
            ThreeGlassesDllInterface.SZVRPluginInit(
                (uint)(ThreeGlassesHeadDisplayLife.AsynchronousProjection ? 0 : 1),
                ThreeGlassesHeadDisplayLife.renderWidth,
                ThreeGlassesHeadDisplayLife.renderHeight);

            // create rendertexture
            for (var i = 0; i < CAMERA_NUM; i++)
            {
//                renderTexture[i] = new RenderTexture(
//                    (int)renderWidth / 2,
//                    (int)renderHeight,
//                    24,
//                    RenderTextureFormat.Default,
//                    RenderTextureReadWrite.Default);
//                renderTexture[i].antiAliasing = (int)hmdAntiAliasingLevel;
                renderTexture[i].Create();
            }

            // bind rendertexure
            ThreeGlassesSubCamera[] cams = GameObject.FindObjectsOfType(typeof(ThreeGlassesSubCamera)) as ThreeGlassesSubCamera[];
            foreach (var cam in cams)
            {
                Camera tempCamera = cam.gameObject.GetComponent <Camera>();
                if (ThreeGlassesSubCamera.CameraTypes.Screen == cam.CameraType)
                {
                    tempCamera.targetTexture = null;
                    continue;
                }
                tempCamera.targetTexture = renderTexture[(int)cam.CameraType];
            }

            // resume render HMD
            StopAllCoroutines();
            StartCoroutine(CallPluginAtEndOfFrames());
        }