Ejemplo n.º 1
0
        /// <summary>
        /// Gets the implementation for the requested renderer mode.
        /// </summary>
        /// <param name="mode">Requested renderer mode.</param>
        /// <returns>IRenderer reference is available; otherwise false.</returns>
        public static IRenderer GetRendererForMode(RendererMode mode)
        {
            switch (mode)
            {
            case RendererMode.Flat:
                return(RenderFlat);

            case RendererMode.Sparkle:
                return(RenderSparkle);

            case RendererMode.Office2007:
                return(RenderOffice2007);

            case RendererMode.Professional:
                return(RenderProfessional);

            case RendererMode.Standard:
                return(RenderStandard);

            case RendererMode.Inherit:
            case RendererMode.Custom:
            default:
                // Should never be passed
                Debug.Assert(false);
                return(null);
            }
        }
Ejemplo n.º 2
0
 void Start()
 {
     if (this.GetComponent <SpriteRenderer>() != null)
     {
         _spriteRenderer = this.GetComponent <SpriteRenderer>();
         _mode           = RendererMode.SpriteRenderer;
         _normalSprite   = _spriteRenderer.sprite;
     }
     else
     {
         _image        = this.GetComponent <Image>();
         _mode         = RendererMode.Image;
         _normalSprite = _image.sprite;
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Initializes the renderer with the specified properties. Use <see cref="GetDevices()"/> to get a device list for use with this function.
        /// </summary>
        /// <param name="parent">The device to use.</param>
        /// <param name="mode">The mode the renderer is created with.</param>
        /// <param name="flags">The flags defining the behaviour during rendering.</param>
        /// <param name="width">The width in pixel of the backbuffer.</param>
        /// <param name="height">The height in pixel of the backbuffer.</param>
        /// <param name="title">The title of the window.</param>
        public void Initialize(IRenderDevice parent, RendererMode mode, RendererFlags flags, int width, int height, string title)
        {
            if ((parent == null) || !(parent is Glfw3Device device))
            {
                throw new ArgumentNullException("device");
            }
            if (Window.Ptr != IntPtr.Zero)
            {
                throw new InvalidOperationException("Already initialized!");
            }
            Resolution = new Vector2()
            {
                X = width, Y = height
            };
            switch (mode)
            {
            case RendererMode.FullScreen:
                Window = glfw3.CreateWindow(width, height, title, device.Monitor);
                if (!Window.IsValid)
                {
                    throw new Exception("No window available!");
                }
                break;

            case RendererMode.WindowedFullScreen:
            {
                glfw3.WindowHint(glfw3.Hint.Decorated, false);
                Window = glfw3.CreateWindow(width, height, title);
                if (!Window.IsValid)
                {
                    throw new Exception("No window available!");
                }
                glfw3.GetMonitorPos(device.Monitor, out var x, out var y);
                glfw3.SetWindowMonitor(Window, glfw3.Monitor.None, x, y, device.VideoMode.Width, device.VideoMode.Height, 60);
                break;
            }

            case RendererMode.Window:
            {
                Window = glfw3.CreateWindow(width, height, title);
                if (!Window.IsValid)
                {
                    throw new Exception("No window available!");
                }
                glfw3.GetMonitorPos(device.Monitor, out var x, out var y);
                glfw3.SetWindowMonitor(Window, glfw3.Monitor.None, x + (width / 4), y + (height / 4), width / 2, height / 2, 60);
                break;
            }

            default: throw new Exception(string.Format("Unknown mode {0}", mode));
            }
            glfw3.MakeContextCurrent(Window);
            glfw3.SwapInterval(flags.HasFlag(RendererFlags.WaitRetrace) ? 1 : 0);
            glfw3.SetFramebufferSizeCallback(Window, funcWindowChange  = new glfw3.FramebufferSizeFunc(WindowChange));
            glfw3.SetWindowCloseCallback(Window, funcWindowClose       = new glfw3.WindowCloseFunc(WindowClose));
            glfw3.SetMouseButtonCallback(Window, funcMouseButtonChange = new glfw3.MouseButtonFunc(MouseButtonChange));

            gl2.GetIntegerv(GL._MAX_TEXTURE_SIZE, out var maxTextureSize);
            CheckErrors("GL_MAX_TEXTURE_SIZE");
            MaxTextureSize = maxTextureSize;
            Trace.TraceInformation("Max Texture Size is {0}", maxTextureSize);

            gl2.GetIntegerv(GL._STENCIL_BITS, out var stencilBits);
            CheckErrors("GL_STENCIL_BITS");
            Trace.TraceInformation("Stencil Bit Size is {0}", stencilBits);

            PrepareShaders();
            PrepareBuffers();

            // prepare viewport
            gl2.Enable(GL._BLEND);
            gl2.BlendFunc(GL._SRC_ALPHA, GL._ONE_MINUS_SRC_ALPHA);
            gl2.MatrixMode(GL._PROJECTION);
            UpdateAspectCorrection();
            PrepareFramebuffer();
            Trace.TraceInformation("Initialized {0} using {1} resolution {2}x{3} using OpenGL {4} Shader {5}", parent, flags, width, height, gl2.GetString(GL._VERSION), gl2.GetString(GL._SHADING_LANGUAGE_VERSION));
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Gets the implementation for the requested renderer mode.
 /// </summary>
 /// <param name="mode">Requested renderer mode.</param>
 /// <returns>IRenderer reference is available; otherwise false.</returns>
 public static IRenderer GetRendererForMode(RendererMode mode)
 {
     switch (mode)
     {
         case RendererMode.Sparkle:
             return RenderSparkle;
         case RendererMode.Office2007:
             return RenderOffice2007;
         case RendererMode.Professional:
             return RenderProfessional;
         case RendererMode.Standard:
             return RenderStandard;
         case RendererMode.Inherit:
         case RendererMode.Custom:
         default:
             // Should never be passed
             Debug.Assert(false);
             return null;
     }
 }