/// <summary> /// Creates a new DisplayResolution object for the specified DisplayDevice. /// </summary> /// <param name="width">The requested width in pixels.</param> /// <param name="height">The requested height in pixels.</param> /// <param name="bitsPerPixel">The requested bits per pixel in bits.</param> /// <param name="refreshRate">The requested refresh rate in hertz.</param> /// <remarks>osuTK will select the closest match between all available resolutions on the specified DisplayDevice.</remarks> /// public DisplayResolution(int width, int height, int bitsPerPixel, float refreshRate, DisplayDevice device) { // Refresh rate may be zero, since this information may not be available on some platforms. if (width <= 0) { throw new ArgumentOutOfRangeException("width", "Must be greater than zero."); } if (height <= 0) { throw new ArgumentOutOfRangeException("height", "Must be greater than zero."); } if (bitsPerPixel <= 0) { throw new ArgumentOutOfRangeException("bitsPerPixel", "Must be greater than zero."); } if (refreshRate < 0) { throw new ArgumentOutOfRangeException("refreshRate", "Must be greater than, or equal to zero."); } if (device == null) { throw new ArgumentNullException("DisplayDevice", "Must be a valid DisplayDevice"); } DisplayResolution res = device.SelectResolution(width, height, bitsPerPixel, refreshRate); this.width = res.width; this.height = res.height; this.bits_per_pixel = res.bits_per_pixel; this.refresh_rate = res.refresh_rate; }
/// <summary>Constructs a new GameWindow with the specified attributes.</summary> /// <param name="width">The width of the GameWindow in pixels.</param> /// <param name="height">The height of the GameWindow in pixels.</param> /// <param name="mode">The osuTK.Graphics.GraphicsMode of the GameWindow.</param> /// <param name="title">The title of the GameWindow.</param> /// <param name="options">GameWindow options regarding window appearance and behavior.</param> /// <param name="device">The osuTK.Graphics.DisplayDevice to construct the GameWindow in.</param> /// <param name="major">The major version for the OpenGL GraphicsContext.</param> /// <param name="minor">The minor version for the OpenGL GraphicsContext.</param> /// <param name="flags">The GraphicsContextFlags version for the OpenGL GraphicsContext.</param> /// <param name="sharedContext">An IGraphicsContext to share resources with.</param> /// <param name="isSingleThreaded">Should the update and render frames be fired on the same thread? If false, render and update events will be fired from separate threads.</param> public GameWindow(int width, int height, GraphicsMode mode, string title, GameWindowFlags options, DisplayDevice device, int major, int minor, GraphicsContextFlags flags, IGraphicsContext sharedContext, bool isSingleThreaded) : base(width, height, title, options, mode == null ? GraphicsMode.Default : mode, device == null ? DisplayDevice.Default : device) { try { this.isSingleThreaded = isSingleThreaded; glContext = new GraphicsContext(mode == null ? GraphicsMode.Default : mode, WindowInfo, major, minor, flags); glContext.MakeCurrent(WindowInfo); (glContext as IGraphicsContextInternal).LoadAll(); VSync = VSyncMode.On; //glWindow.WindowInfoChanged += delegate(object sender, EventArgs e) { OnWindowInfoChangedInternal(e); }; } catch (Exception e) { Debug.Print(e.ToString()); base.Dispose(); throw; } }
/// <summary>Constructs a new GameWindow with the specified attributes.</summary> /// <param name="width">The width of the GameWindow in pixels.</param> /// <param name="height">The height of the GameWindow in pixels.</param> /// <param name="mode">The osuTK.Graphics.GraphicsMode of the GameWindow.</param> /// <param name="title">The title of the GameWindow.</param> /// <param name="options">GameWindow options regarding window appearance and behavior.</param> /// <param name="device">The osuTK.Graphics.DisplayDevice to construct the GameWindow in.</param> /// <param name="major">The major version for the OpenGL GraphicsContext.</param> /// <param name="minor">The minor version for the OpenGL GraphicsContext.</param> /// <param name="flags">The GraphicsContextFlags version for the OpenGL GraphicsContext.</param> /// <param name="sharedContext">An IGraphicsContext to share resources with.</param> public GameWindow(int width, int height, GraphicsMode mode, string title, GameWindowFlags options, DisplayDevice device, int major, int minor, GraphicsContextFlags flags, IGraphicsContext sharedContext) : this(width, height, mode, title, options, device, major, minor, flags, sharedContext, true) { }
/// <summary>Constructs a new GameWindow with the specified attributes.</summary> /// <param name="width">The width of the GameWindow in pixels.</param> /// <param name="height">The height of the GameWindow in pixels.</param> /// <param name="mode">The osuTK.Graphics.GraphicsMode of the GameWindow.</param> /// <param name="title">The title of the GameWindow.</param> /// <param name="options">GameWindow options regarding window appearance and behavior.</param> /// <param name="device">The osuTK.Graphics.DisplayDevice to construct the GameWindow in.</param> public GameWindow(int width, int height, GraphicsMode mode, string title, GameWindowFlags options, DisplayDevice device) : this(width, height, mode, title, options, device, 1, 0, GraphicsContextFlags.Default) { }
/// <summary>Constructs a new NativeWindow with the specified attributes.</summary> /// <param name="x">Horizontal screen space coordinate of the NativeWindow's origin.</param> /// <param name="y">Vertical screen space coordinate of the NativeWindow's origin.</param> /// <param name="width">The width of the NativeWindow in pixels.</param> /// <param name="height">The height of the NativeWindow in pixels.</param> /// <param name="title">The title of the NativeWindow.</param> /// <param name="options">GameWindow options specifying window appearance and behavior.</param> /// <param name="mode">The osuTK.Graphics.GraphicsMode of the NativeWindow.</param> /// <param name="device">The osuTK.Graphics.DisplayDevice to construct the NativeWindow in.</param> /// <exception cref="System.ArgumentOutOfRangeException">If width or height is less than 1.</exception> /// <exception cref="System.ArgumentNullException">If mode or device is null.</exception> public NativeWindow(int x, int y, int width, int height, string title, GameWindowFlags options, GraphicsMode mode, DisplayDevice device) { // TODO: Should a constraint be added for the position? if (width < 1) { throw new ArgumentOutOfRangeException("width", "Must be greater than zero."); } if (height < 1) { throw new ArgumentOutOfRangeException("height", "Must be greater than zero."); } if (mode == null) { throw new ArgumentNullException("mode"); } this.options = options; this.device = device; this.thread_id = System.Threading.Thread.CurrentThread.ManagedThreadId; IPlatformFactory factory = Factory.Default; implementation = factory.CreateNativeWindow(x, y, width, height, title, mode, options, this.device); factory.RegisterResource(this); if ((options & GameWindowFlags.Fullscreen) != 0) { if (this.device != null) { this.device.ChangeResolution(width, height, mode.ColorFormat.BitsPerPixel, 0); } WindowState = WindowState.Fullscreen; } if ((options & GameWindowFlags.FixedWindow) != 0) { WindowBorder = WindowBorder.Fixed; } }
// TODO: Remaining constructors. /// <summary>Constructs a new centered NativeWindow with the specified attributes.</summary> /// <param name="width">The width of the NativeWindow in pixels.</param> /// <param name="height">The height of the NativeWindow in pixels.</param> /// <param name="title">The title of the NativeWindow.</param> /// <param name="options">GameWindow options specifying window appearance and behavior.</param> /// <param name="mode">The osuTK.Graphics.GraphicsMode of the NativeWindow.</param> /// <param name="device">The osuTK.Graphics.DisplayDevice to construct the NativeWindow in.</param> /// <exception cref="System.ArgumentOutOfRangeException">If width or height is less than 1.</exception> /// <exception cref="System.ArgumentNullException">If mode or device is null.</exception> public NativeWindow(int width, int height, string title, GameWindowFlags options, GraphicsMode mode, DisplayDevice device) : this(device != null ? device.Bounds.Left + (device.Bounds.Width - width) / 2 : 0, device != null ? device.Bounds.Top + (device.Bounds.Height - height) / 2 : 0, width, height, title, options, mode, device) { }