223c742648
Update X11 stack to use System.Windows.Forms.XPlatUI for its Display, Screen and RootWindow. Fixed mode setting for X11GLControl. Fixed X11 shutdown (was generating X11 errors). Added DeviceContext getter to WinWindowInfo. Made IWindowInfo disposable. Added documentation to many public methods. Worked around a Mono 1.2.4 bug with Handle creation on Windows.Forms.Control. Updated GL.BuildExtensionList to correctly parse GL_VERSION when in indirect rendering mode. Fixed crash errors in X11GLContext.CreateContext and X11GraphicsMode. Added a ref overload to Glx.ChooseVisual() IGraphicsContext.MakeCurrent now takes an IWindowInfo parameter. This allows the user to change to window is context is bound to (untested). Renamed XyzWindowInfo.Handle to XyzWindowInfo.WindowHandle.
336 lines
11 KiB
C#
336 lines
11 KiB
C#
#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 { }
|
|
}
|