public override void OnUpdate(float dealTime)
    {
        //达不到最低配的要求
        if (SystemInfo.systemMemorySize < MemoryRequire ||
            SystemInfo.graphicsMemorySize < GraphsicMemoryRequire ||
            SystemInfo.graphicsShaderLevel < shaderAPIRequire)
        {
            //PerformanceCheckManager.Instance.flowShareData.ui_Checking.gameObject.SetActive(false);
            PerformanceCheckManager.Instance.ReslutData.VeryLowMachine = true;
            PerformanceCheckManager.Instance.ChangeFlow(CheckFlow.Finish);
            return;
        }

        //查看是否支持RT,不支持的话,中级渲染也不行,中级渲染需要2个rt
        Resolution res = ImageSetting.GetCurrentResolution();

        RenderTexture rt1 = new RenderTexture(res.width, res.height, 24);

        if (!rt1.Create())
        {
            PerformanceCheckManager.Instance.ReslutData.notSupportRT = true;
            //PerformanceCheckManager.Instance.flowShareData.ui_Checking.gameObject.SetActive(false);
            PerformanceCheckManager.Instance.ChangeFlow(CheckFlow.Finish);
            return;
        }

        RenderTexture rt2 = new RenderTexture(res.width, res.height, 24);

        if (!rt2.Create())
        {
            rt1.Release();
            GameObject.Destroy(rt1);
            rt1 = null;
            PerformanceCheckManager.Instance.ReslutData.notSupportRT = true;
            //PerformanceCheckManager.Instance.flowShareData.ui_Checking.gameObject.SetActive(false);
            PerformanceCheckManager.Instance.ChangeFlow(CheckFlow.Finish);
            return;
        }

        rt1.Release();
        GameObject.Destroy(rt1);
        rt1 = null;
        rt2.Release();
        GameObject.Destroy(rt2);
        rt2 = null;

        //不支持高等级渲染,硬件限制
        if (SystemInfo.graphicsShaderLevel < highShaderAPIRequire || SystemInfo.supportedRenderTargetCount < highRTCout ||
            SystemInfo.systemMemorySize < highMemoryRequire || SystemInfo.graphicsMemorySize < highGraphiscMemoryRequire)
        {
            PerformanceCheckManager.Instance.ReslutData.notSupportHighLevel = true;
        }
        PerformanceCheckManager.Instance.ReslutData.VeryLowMachine = false;
        PerformanceCheckManager.Instance.ChangeFlow(CheckFlow.GeometricRender);
    }
Esempio n. 2
0
        private void InitUICamera()
        {
            GameObject uiCameraInstance = GameObject.Find(UDefines.UICamera);

            if (uiCameraInstance == null)
            {
                uiCameraInstance       = new GameObject(UDefines.UICamera);
                uiCameraInstance.layer = LayerMask.NameToLayer(Config.LayerUI);
                uiCameraInstance.AddComponent <Camera>();
                DontDestroyOnLoad(uiCameraInstance);
            }

            m_uiCamera = uiCameraInstance.GetComponent <Camera>();
            //这里确保相机用的值没被改变
            m_uiCamera.transform.SetPosition(new Vector3(10000, 10000, 10000));
            m_uiCamera.clearFlags       = CameraClearFlags.Depth;
            m_uiCamera.cullingMask      = 1 << LayerMask.NameToLayer(Config.LayerUI);
            m_uiCamera.orthographic     = true;
            m_uiCamera.orthographicSize = 5; // ResolutionWidth / ResolutionHeight;
            m_uiCamera.depth            = 1; //这个相机要在其他相机上面
            m_uiCamera.nearClipPlane    = 0;

            m_canvas.renderMode  = RenderMode.WorldSpace;//RenderMode.ScreenSpaceCamera;
            m_canvas.worldCamera = m_uiCamera;

            if (m_canvas.renderMode == RenderMode.WorldSpace)
            {
                m_canvas.transform.localScale = new Vector3(0.009259259f, 0.009259259f, 0.009259259f);
                m_canvas.transform.SetPosition(new Vector3(10000, 10000, 10002));
                //m_canvas.transform.SetPosition(m_uiCamera.transform.position);
                (m_canvas.transform as RectTransform).pivot = new Vector2(0.5f, 0.5f);
                SetResolution(ImageSetting.GetCurrentResolution().width, ImageSetting.GetCurrentResolution().height);
                //m_uiCamera.orthographicSize = 1080 / 2;
                //m_uiCamera.farClipPlane = 20000;
            }
        }