// Methods handled by this control itself; called by the operating system. // In many cases, when one of the following methods is called by the // operating system, the method will call a corrsponding method to invoke // event handlers set by the client of this control. protected override void OnPaint(PaintEventArgs e) { // If in designer mode, then just fill the area with the BackColor color. if ((DesignMode) || (false == mAttemptedInitialization)) { e.Graphics.Clear(BackColor); if (DesignMode) { return; } } if (false == mAttemptedInitialization) { mAttemptedInitialization = true; fGLContext = new GLContext(Handle, PFDFlags.DoubleBuffer); mGR = new GraphicsInterface(fGLContext); fGLContext.MakeCurrentContext(); // Set some default drawing conditions mGR.ClearColor(BackColor.R / 255.0f, BackColor.G / 255.0f, BackColor.B / 255.0f, 1.0f); InvokeOpenGLStarted(); base.OnPaint(e); // Triggers Paint *event*; thus, our override gets called before the event return; } // Set some default drawing conditions mGR.ClearColor(BackColor.R / 255.0f, BackColor.G / 255.0f, BackColor.B / 255.0f, 1.0f); fGLContext.MakeCurrentContext(); base.OnPaint(e); // Triggers Paint *event*; thus, our override gets called before the event }