private void RenderScreen()
        {
            Profiler.BeginSample("RPM.RenderScreen [" + activePage.name + "]");

            RenderTexture backupRenderTexture = RenderTexture.active;

            if (!screenTexture.IsCreated())
            {
                screenTexture.Create();
            }
            screenTexture.DiscardContents();
            RenderTexture.active = screenTexture;

            if (resourceDepleted || noCommConnection)
            {
                // If we're out of electric charge, we're drawing a blank screen.
                GL.Clear(true, true, emptyColorValue);
            }
            else
            {
                // This is the important witchcraft. Without that, DrawTexture does not print where we expect it to.
                // Cameras don't care because they have their own matrices, but DrawTexture does.
                GL.PushMatrix();
                GL.LoadPixelMatrix(0, screenPixelWidth, screenPixelHeight, 0);

                // Actual rendering of the background is delegated to the page object.
                activePage.RenderBackground(screenTexture);

                if (!string.IsNullOrEmpty(activePage.Text))
                {
                    textRenderer.Render(screenTexture, activePage);
                }

                activePage.RenderOverlay(screenTexture);
                GL.PopMatrix();
            }

            RenderTexture.active = backupRenderTexture;
            Profiler.EndSample();
        }
        private void RenderScreen()
        {
            RenderTexture backupRenderTexture = RenderTexture.active;

            if (!screenTexture.IsCreated())
            {
                screenTexture.Create();
            }
            screenTexture.DiscardContents();
            RenderTexture.active = screenTexture;

            if (needsElectricCharge && electricChargeReserve < 0.01d)
            {
                // If we're out of electric charge, we're drawing a blank screen.
                GL.Clear(true, true, emptyColorValue);
                RenderTexture.active = backupRenderTexture;
                return;
            }

            // This is the important witchcraft. Without that, DrawTexture does not print where we expect it to.
            // Cameras don't care because they have their own matrices, but DrawTexture does.
            GL.PushMatrix();
            GL.LoadPixelMatrix(0, screenPixelWidth, screenPixelHeight, 0);

            // Actual rendering of the background is delegated to the page object.
            activePage.RenderBackground(screenTexture);

            if (!string.IsNullOrEmpty(activePage.Text))
            {
                textRenderer.Render(screenTexture, screenBuffer, activePage);
            }

            activePage.RenderOverlay(screenTexture);
            GL.PopMatrix();

            RenderTexture.active = backupRenderTexture;
        }