From 24be068742dc2881f63a023f85687c6636381111 Mon Sep 17 00:00:00 2001 From: thefiddler Date: Sun, 26 Jan 2014 10:36:52 +0100 Subject: [PATCH] [GLControl] Clarified docs regarding multiple contexts --- Source/GLControl/GLControl.cs | 44 ++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/Source/GLControl/GLControl.cs b/Source/GLControl/GLControl.cs index bafed945..a4efd029 100644 --- a/Source/GLControl/GLControl.cs +++ b/Source/GLControl/GLControl.cs @@ -287,6 +287,7 @@ namespace OpenTK /// /// Swaps the front and back buffers, presenting the rendered scene to the screen. + /// This method will have no effect on a single-buffered GraphicsMode. /// public void SwapBuffers() { @@ -299,8 +300,19 @@ namespace OpenTK #region public void MakeCurrent() /// - /// Makes the underlying this GLControl current in the calling thread. - /// All OpenGL commands issued are hereafter interpreted by this GLControl. + /// + /// Makes current in the calling thread. + /// All OpenGL commands issued are hereafter interpreted by this context. + /// + /// + /// When using multiple GLControls, calling MakeCurrent on + /// one control will make all other controls non-current in the calling thread. + /// + /// + /// + /// A GLControl can only be current in one thread at a time. + /// To make a control non-current, call GLControl.Context.MakeCurrent(null). + /// /// public void MakeCurrent() { @@ -330,7 +342,12 @@ namespace OpenTK #region public IGraphicsContext Context /// - /// Gets an interface to the underlying GraphicsContext used by this GLControl. + /// Gets the IGraphicsContext instance that is associated with the GLControl. + /// The associated IGraphicsContext is updated whenever the GLControl + /// handle is created or recreated. + /// When using multiple GLControls, ensure that Context + /// is current before performing any OpenGL operations. + /// /// [Browsable(false)] public IGraphicsContext Context @@ -365,7 +382,11 @@ namespace OpenTK #region public bool VSync /// - /// Gets or sets a value indicating whether vsync is active for this GLControl. + /// Gets or sets a value indicating whether vsync is active for this GLControl. + /// When using multiple GLControls, ensure that + /// is current before accessing this property. + /// + /// /// [Description("Indicates whether GLControl updates are synced to the monitor's refresh rate.")] public bool VSync @@ -400,11 +421,10 @@ namespace OpenTK #region public GraphicsMode GraphicsMode /// - /// Gets the GraphicsMode of the GraphicsContext attached to this GLControl. + /// Gets the GraphicsMode of the IGraphicsContext associated with + /// this GLControl. If you wish to change GraphicsMode, you must + /// destroy and recreate the GLControl. /// - /// - /// To change the GraphicsMode, you must destroy and recreate the GLControl. - /// public GraphicsMode GraphicsMode { get @@ -430,7 +450,13 @@ namespace OpenTK #region public Bitmap GrabScreenshot() - /// Grabs a screenshot of the frontbuffer contents. + /// + /// Grabs a screenshot of the frontbuffer contents. + /// When using multiple GLControls, ensure that + /// is current before accessing this property. + /// + /// + /// /// A System.Drawing.Bitmap, containing the contents of the frontbuffer. /// /// Occurs when no OpenTK.Graphics.GraphicsContext is current in the calling thread.