diff --git a/Source/Examples/WinForms/Cube.cs b/Source/Examples/WinForms/Cube.cs
index 8e62ba55..458026ab 100644
--- a/Source/Examples/WinForms/Cube.cs
+++ b/Source/Examples/WinForms/Cube.cs
@@ -33,8 +33,6 @@ namespace Examples.WinForms
public Cube()
{
InitializeComponent();
-
- Application.Idle += Application_Idle;
this.ShowDialog();
}
@@ -94,6 +92,12 @@ namespace Examples.WinForms
{
base.OnLoad(e);
+ glControl.KeyDown += new KeyEventHandler(glControl_KeyDown);
+ glControl.Resize += new EventHandler(glControl_Resize);
+ glControl.Paint += new PaintEventHandler(glControl_Paint);
+
+ glControl.CreateContext();
+
Text =
GL.GetString(GL.Enums.StringName.VENDOR) + " " +
GL.GetString(GL.Enums.StringName.RENDERER) + " " +
@@ -102,30 +106,24 @@ namespace Examples.WinForms
GL.ClearColor(0.1f, 0.1f, 0.5f, 0.0f);
GL.Enable(GL.Enums.EnableCap.DEPTH_TEST);
- glControl.KeyDown += new KeyEventHandler(Cube_KeyDown);
-
- OnResize(e);
+ Application.Idle += Application_Idle;
}
-
+
#endregion
- #region Resize event handler
+ #region GLControl.Resize event handler
- protected override void OnResize(EventArgs e)
+ void glControl_Resize(object sender, EventArgs e)
{
- base.OnResize(e);
+ OpenTK.GLControl c = sender as OpenTK.GLControl;
- if (ClientSize.Height == 0)
- ClientSize = new System.Drawing.Size(ClientSize.Width, 1);
+ if (c.ClientSize.Height == 0)
+ c.ClientSize = new System.Drawing.Size(c.ClientSize.Width, 1);
- GL.Viewport(0, 0, ClientSize.Width, ClientSize.Height);
+ GL.Viewport(0, 0, c.ClientSize.Width, c.ClientSize.Height);
double ratio = 0.0;
- ratio = ClientSize.Width / (double)ClientSize.Height;
- //if (ClientSize.Width > ClientSize.Height)
- // ratio = ClientSize.Width / (double)ClientSize.Height;
- //else
- // ratio = ClientSize.Height / (double)ClientSize.Width;
+ ratio = c.ClientSize.Width / (double)c.ClientSize.Height;
GL.MatrixMode(GL.Enums.MatrixMode.PROJECTION);
GL.LoadIdentity();
@@ -134,20 +132,9 @@ namespace Examples.WinForms
#endregion
- #region Paint event handler
+ #region GLControl.KeyDown event handler
- protected override void OnPaint(PaintEventArgs e)
- {
- base.OnPaint(e);
-
- Render();
- }
-
- #endregion
-
- #region KeyDown event handler
-
- void Cube_KeyDown(object sender, KeyEventArgs e)
+ void glControl_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.Shift)
{
@@ -163,6 +150,15 @@ namespace Examples.WinForms
}
}
+ #endregion
+
+ #region GLControl.Paint event handler
+
+ void glControl_Paint(object sender, PaintEventArgs e)
+ {
+ Render();
+ }
+
#endregion
#region private void DrawCube()
diff --git a/Source/Examples/WinForms/W01_First_Window.cs b/Source/Examples/WinForms/W01_First_Window.cs
index 38065cfa..e5c2659a 100644
--- a/Source/Examples/WinForms/W01_First_Window.cs
+++ b/Source/Examples/WinForms/W01_First_Window.cs
@@ -39,34 +39,35 @@ namespace Examples.WinForms
private void redButton_Click(object sender, EventArgs e)
{
- //GL.ClearColor(0.7f, 0.0f, 0.0f, 0.0f);
- //glControl1.Invalidate();
+ GL.ClearColor(0.7f, 0.0f, 0.0f, 0.0f);
+ glControl1.Invalidate();
}
private void greenButton_Click(object sender, EventArgs e)
{
- //GL.ClearColor(0.0f, 0.5f, 0.0f, 0.0f);
- //glControl1.Invalidate();
+ GL.ClearColor(0.0f, 0.5f, 0.0f, 0.0f);
+ glControl1.Invalidate();
}
private void blueButton_Click(object sender, EventArgs e)
{
- //GL.ClearColor(0.0f, 0.0f, 0.7f, 0.0f);
- //glControl1.Invalidate();
+ GL.ClearColor(0.0f, 0.0f, 0.7f, 0.0f);
+ glControl1.Invalidate();
}
private void glControl1_Paint(object sender, PaintEventArgs e)
{
- //GL.Clear(GL.Enums.ClearBufferMask.COLOR_BUFFER_BIT);
- //glControl1.SwapBuffers();
+ System.Diagnostics.Debug.Print("Paint");
+ GL.Clear(GL.Enums.ClearBufferMask.COLOR_BUFFER_BIT);
+ glControl1.SwapBuffers();
}
private void glControl1_Resize(object sender, OpenTK.Platform.ResizeEventArgs e)
{
- //if (glControl1.ClientSize.Height == 0)
- // glControl1.ClientSize = new System.Drawing.Size(glControl1.ClientSize.Width, 1);
+ if (glControl1.ClientSize.Height == 0)
+ glControl1.ClientSize = new System.Drawing.Size(glControl1.ClientSize.Width, 1);
- //GL.Viewport(0, 0, glControl1.ClientSize.Width, glControl1.ClientSize.Height);
+ GL.Viewport(0, 0, glControl1.ClientSize.Width, glControl1.ClientSize.Height);
}
private void glControl1_KeyDown(object sender, KeyEventArgs e)
diff --git a/Source/OpenTK/GLControl.cs b/Source/OpenTK/GLControl.cs
index 223bfb87..e4e010fd 100644
--- a/Source/OpenTK/GLControl.cs
+++ b/Source/OpenTK/GLControl.cs
@@ -23,7 +23,7 @@ namespace OpenTK
// TODO: Document the GLControl class.
///
- ///
+ /// Defines a UserControl with opengl rendering capabilities.
///
public partial class GLControl : UserControl, IGLControl
{
@@ -43,6 +43,10 @@ namespace OpenTK
{
}
+ ///
+ /// Constructs a new GLControl, with the specified DisplayMode.
+ ///
+ /// The DisplayMode of the control.
public GLControl(DisplayMode mode)
{
InitializeComponent();
@@ -88,9 +92,6 @@ namespace OpenTK
///
public void CreateContext()
{
- Debug.Print("Creating opengl context");
- Debug.Indent();
-
if (Environment.OSVersion.Platform == PlatformID.Win32NT ||
Environment.OSVersion.Platform == PlatformID.Win32Windows)
{
@@ -109,8 +110,7 @@ namespace OpenTK
}
OpenTK.OpenGL.GL.LoadAll();
-
- Debug.Unindent();
+ this.OnResize(EventArgs.Empty);
}
///
diff --git a/Source/OpenTK/Platform/X11/X11GLContext.cs b/Source/OpenTK/Platform/X11/X11GLContext.cs
index ea811cc2..9b509f34 100644
--- a/Source/OpenTK/Platform/X11/X11GLContext.cs
+++ b/Source/OpenTK/Platform/X11/X11GLContext.cs
@@ -142,10 +142,10 @@ visual = Glx.ChooseVisual(windowInfo.Display, windowInfo.Screen, attrib);
Debug.WriteLine(direct ? "Context is direct." : "Context is indirect.");
context = Glx.CreateContext(windowInfo.Display, visual, shareHandle, direct);
+ Debug.Unindent();
if (context != IntPtr.Zero)
{
Debug.WriteLine(String.Format("New opengl context created. (id: {0})", context));
- Debug.Unindent();
}
else
{
diff --git a/Source/OpenTK/Platform/X11/X11GLControl.cs b/Source/OpenTK/Platform/X11/X11GLControl.cs
index 2fb57cd7..d7ac8577 100644
--- a/Source/OpenTK/Platform/X11/X11GLControl.cs
+++ b/Source/OpenTK/Platform/X11/X11GLControl.cs
@@ -97,6 +97,8 @@ namespace OpenTK.Platform.X11
*/
//glContext.MakeCurrent();
//OpenTK.OpenGL.GL.LoadAll();
+
+ Debug.Unindent();
}
void c_HandleCreated(object sender, EventArgs e)
@@ -104,11 +106,12 @@ namespace OpenTK.Platform.X11
UserControl c = (sender as UserControl);
Debug.Print("GLControl handle created, creating X11GLContext.");
Debug.Indent();
- glContext.windowInfo.Handle = info.Handle = (sender as UserControl).Handle;
try
{
+ glContext.windowInfo.Handle = info.Handle = (sender as UserControl).Handle;
glContext.CreateContext(null, true);
+ glContext.MakeCurrent();
}
catch (ApplicationException expt)
{