/// <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); } }
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; } }
/// <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)); }
/// <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; } }