2009-02-22 11:43:35 +01:00
|
|
|
|
#region --- License ---
|
|
|
|
|
/* Licensed under the MIT/X11 license.
|
|
|
|
|
* Copyright (c) 2006-2008 the OpenTK Team.
|
|
|
|
|
* This notice may not be removed from any source distribution.
|
|
|
|
|
* See license.txt for licensing detailed licensing details.
|
|
|
|
|
*/
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region --- Using directives ---
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Globalization;
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
namespace OpenTK
|
|
|
|
|
{
|
|
|
|
|
using OpenTK.Graphics;
|
|
|
|
|
|
|
|
|
|
/// <summary>Defines the display mode for a render window.</summary>
|
|
|
|
|
[Obsolete]
|
|
|
|
|
public sealed class DisplayMode
|
|
|
|
|
{
|
|
|
|
|
#region --- Private Variables ---
|
|
|
|
|
|
|
|
|
|
private int width, height;
|
|
|
|
|
private ColorMode color_format, auxilliary_color_format;
|
|
|
|
|
|
|
|
|
|
private int depthBits, stencilBits;
|
|
|
|
|
|
|
|
|
|
private float refreshRate;
|
|
|
|
|
private bool vsync;
|
|
|
|
|
private bool fullscreen;
|
|
|
|
|
private int buffers;
|
|
|
|
|
private bool stereo;
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region --- Constructors ---
|
|
|
|
|
|
|
|
|
|
public DisplayMode(DisplayMode mode)
|
|
|
|
|
: this(mode.width, mode.height, mode.color_format, mode.depthBits, mode.stencilBits, mode.auxilliary_color_format.BitsPerPixel,
|
|
|
|
|
mode.buffers, mode.fullscreen, mode.stereo, mode.vsync, mode.refreshRate) { }
|
|
|
|
|
|
|
|
|
|
public DisplayMode() : this(640, 480) { }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Constructs a new DisplayMode from the specified parameters.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="width">The Width of the DisplayMode, in pixels.</param>
|
|
|
|
|
/// <param name="height">The Height of the DisplayMode, in pixels.</param>
|
|
|
|
|
/// <param name="color">The ColorMode of the color buffer.</param>
|
|
|
|
|
/// <param name="depth">The number of bits in the depth buffer.</param>
|
|
|
|
|
/// <param name="stencil">The number of bits in the stencil buffer.</param>
|
|
|
|
|
/// <param name="aux">The number of bits in the auxilliary buffer.</param>
|
|
|
|
|
/// <param name="fullscreen">Set to true for a fullscreen DisplayMode.</param>
|
|
|
|
|
/// <param name="stereo">Set to true for a DisplayMode with stereographic capabilities.</param>
|
|
|
|
|
/// <param name="buffers">The number of render buffers. Typical values include one (single-), two (double-) or three (triple-buffering).</param>
|
|
|
|
|
/// <param name="vsync">Set to true to sync the updates to the screen refresh rate.</param>
|
|
|
|
|
/// <param name="refresh">The desired RefreshRate. Taken into account only for Fullscreen DisplayModes.</param>
|
|
|
|
|
public DisplayMode(int width, int height, ColorMode color, int depth, int stencil, int aux, int buffers,
|
|
|
|
|
bool fullscreen, bool stereo, bool vsync, float refresh)
|
|
|
|
|
{
|
|
|
|
|
this.Width = width;
|
|
|
|
|
this.Height = height;
|
|
|
|
|
this.Color = color;
|
|
|
|
|
this.DepthBits = depth;
|
|
|
|
|
this.StencilBits = stencil;
|
|
|
|
|
this.AuxBits = aux;
|
|
|
|
|
this.Buffers = buffers;
|
|
|
|
|
this.Fullscreen = fullscreen;
|
|
|
|
|
this.Stereo = stereo;
|
|
|
|
|
this.Vsync = vsync;
|
|
|
|
|
this.RefreshRate = refresh;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Constructs a new DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="width">The Width of the DisplayMode in pixels.</param>
|
|
|
|
|
/// <param name="height">The Height of the DisplayMode in pixels.</param>
|
|
|
|
|
public DisplayMode(int width, int height)
|
|
|
|
|
: this(width, height, DisplayDevice.Default.BitsPerPixel, 16, 0, 0, 2, false, false, false, 0.0f)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Constructs a new DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="width">The Width of the DisplayMode in pixels.</param>
|
|
|
|
|
/// <param name="height">The Height of the DisplayMode in pixels.</param>
|
|
|
|
|
/// <param name="color">The ColorMode of the color buffer.</param>
|
|
|
|
|
public DisplayMode(int width, int height, ColorMode color)
|
|
|
|
|
: this(width, height, color, 16, 0, 0, 2, false, false, false, 0.0f)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Constructs a new DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="width">The Width of the DisplayMode in pixels.</param>
|
|
|
|
|
/// <param name="height">The Height of the DisplayMode in pixels.</param>
|
|
|
|
|
/// <param name="color">The ColorMode of the color buffer.</param>
|
|
|
|
|
/// <param name="depth">The number of bits in the depth buffer.</param>
|
|
|
|
|
public DisplayMode(int width, int height, ColorMode color, int depth)
|
|
|
|
|
: this(width, height, color, depth, 0, 0, 2, false, false, false, 0.0f)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Constructs a new DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="width">The Width of the DisplayMode in pixels.</param>
|
|
|
|
|
/// <param name="height">The Height of the DisplayMode in pixels.</param>
|
|
|
|
|
/// <param name="color">The ColorMode of the color buffer.</param>
|
|
|
|
|
/// <param name="depth">The number of bits in the depth buffer.</param>
|
|
|
|
|
/// <param name="fullscreen">True for a fullscreen DisplayMode, false otherwise.</param>
|
|
|
|
|
public DisplayMode(int width, int height, ColorMode color, int depth, bool fullscreen)
|
|
|
|
|
: this(width, height, color, depth, 0, 0, 2, fullscreen, false, false, 0.0f)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region --- Public Properties ---
|
|
|
|
|
#if false
|
|
|
|
|
#region public int ColorDepth
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets an OpenTK.Graphics.ColorMode that describes the color format of this DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public ColorMode ColorDepth
|
|
|
|
|
{
|
|
|
|
|
get { return color_format; }
|
|
|
|
|
private set { color_format = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region public int AuxilliaryColorDepth
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets an OpenTK.Graphics.ColorMode that describes the color format of this DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public ColorMode AuxilliaryColorDepth
|
|
|
|
|
{
|
|
|
|
|
get { return auxilliary_color_format; }
|
|
|
|
|
private set { auxilliary_color_format = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region public int Depth
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets a System.Int32 that contains the bits per pixel for the depth buffer
|
|
|
|
|
/// of this DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int Depth
|
|
|
|
|
{
|
|
|
|
|
get { return depthBits; }
|
|
|
|
|
private set { depthBits = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region public int Stencil
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets a System.Int32 that contains the bits per pixel for the stencil buffer
|
|
|
|
|
/// of this DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int Stencil
|
|
|
|
|
{
|
|
|
|
|
get { return stencilBits; }
|
|
|
|
|
private set { stencilBits = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
#endif
|
|
|
|
|
#region Obsolete Properties
|
|
|
|
|
|
|
|
|
|
#region public bool Stereo
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets a System.Boolean indicating whether this DisplayMode is stereoscopic.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Obsolete("Use GraphicsMode.Stereo instead.")]
|
|
|
|
|
public bool Stereo
|
|
|
|
|
{
|
|
|
|
|
get { return this.stereo; }
|
|
|
|
|
private set { this.stereo = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region public int Buffers
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets a System.Int32 containing the number of buffers associated with this
|
|
|
|
|
/// DisplayMode.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Obsolete("Use GraphicsMode.Buffers instead.")]
|
|
|
|
|
public int Buffers
|
|
|
|
|
{
|
|
|
|
|
get { return this.buffers; }
|
|
|
|
|
private set { this.buffers = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
[Obsolete("Use GameWindow.Fullscreen instead.")]
|
|
|
|
|
public bool Fullscreen
|
|
|
|
|
{
|
|
|
|
|
get { return this.fullscreen; }
|
|
|
|
|
internal set { this.fullscreen = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Obsolete("Use GraphicsContext.VSync, GLControl.VSync or GameWindow.VSync instead.")]
|
|
|
|
|
public bool Vsync
|
|
|
|
|
{
|
|
|
|
|
get { return this.vsync; }
|
|
|
|
|
internal set { this.vsync = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Obsolete("Use OpenTK.Graphics.DisplayDevice.RefreshRate instead.")]
|
|
|
|
|
public float RefreshRate
|
|
|
|
|
{
|
|
|
|
|
get { return this.refreshRate; }
|
|
|
|
|
private set { this.refreshRate = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region public ColorFormat Color
|
|
|
|
|
|
|
|
|
|
[Obsolete("Use GraphicsMode.Color instead.")]
|
|
|
|
|
public ColorMode Color
|
|
|
|
|
{
|
|
|
|
|
get { return this.color_format; }
|
|
|
|
|
internal set { this.color_format = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region public int Height
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets or sets the Height of the DisplayMode. Height is the vertical span measured in pixels.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Obsolete("Use GameWindow.Height or GLControl.Height instead.")]
|
|
|
|
|
public int Height
|
|
|
|
|
{
|
|
|
|
|
get { return height; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value > 0 /* && (value < Screen[0].Height) */)
|
|
|
|
|
{
|
|
|
|
|
height = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region public int Width
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets or sets the Width of the DisplayMode. Width is the horizontal span measured in pixels.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Obsolete("Use GameWindow.Width or GLControl.Width instead.")]
|
|
|
|
|
public int Width
|
|
|
|
|
{
|
|
|
|
|
get { return width; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value > 0)
|
|
|
|
|
{
|
|
|
|
|
width = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
[Obsolete("Use GraphicsMode.Depth instead.")]
|
|
|
|
|
public int DepthBits
|
|
|
|
|
{
|
|
|
|
|
get { return this.depthBits; }
|
|
|
|
|
internal set { this.depthBits = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Obsolete("Use GraphicsMode.Stencil instead.")]
|
|
|
|
|
public int StencilBits
|
|
|
|
|
{
|
|
|
|
|
get { return this.stencilBits; }
|
|
|
|
|
internal set { this.stencilBits = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Obsolete("Use GraphicsMode.AuxilliaryColorDepth instead.")]
|
|
|
|
|
public int AuxBits
|
|
|
|
|
{
|
|
|
|
|
get { return this.auxilliary_color_format.BitsPerPixel; }
|
|
|
|
|
internal set { this.auxilliary_color_format = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
internal GraphicsMode ToGraphicsMode()
|
|
|
|
|
{
|
|
|
|
|
return new GraphicsMode(this.Color.BitsPerPixel, this.DepthBits, this.StencilBits, 0, this.AuxBits, this.Buffers, this.Stereo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region --- Overrides ---
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Describes this DisplayMode instance.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>Returns a System.String that describes this DisplayMode instance.</returns>
|
|
|
|
|
public override string ToString()
|
|
|
|
|
{
|
|
|
|
|
return string.Format("Display Mode: {0}, depth: {1}, stencil {2}, aux {3} refresh {4}Hz",
|
|
|
|
|
Color.ToString(),
|
|
|
|
|
DepthBits,
|
|
|
|
|
StencilBits,
|
|
|
|
|
AuxBits,
|
|
|
|
|
RefreshRate
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class DisplayModeMatchOptions { }
|
|
|
|
|
}
|