Beispiel #1
0
 /// <summary>
 /// Delete the GlControl context.
 /// </summary>
 protected override void DeleteContext()
 {
     // Event handling
     OnGraphicsContextDestroying();
     // Delete OpenGL context
     _GraphicsContext.Dispose();
     _GraphicsContext = null;
     // Emulates GlControl behaviour
     _RenderContext = IntPtr.Zero;
 }
        /// <summary>
        /// Main routine for every RenderKernelService thread.
        /// </summary>
        /// <param name="data"></param>
        private static void KernelServiceMain(object data)
        {
            object[] args = (object[])data;
            GraphicsKernelService kService = (GraphicsKernelService)args[0];
            GraphicsContext       ctx      = (GraphicsContext)args[1];

            // Make the context current
            if (ctx != null)
            {
                ctx.MakeCurrent(true);
            }

            // Execute this service in another thread
            kService.ThreadExecute(ctx);

            // Dispose current context, if any
            if (ctx != null)
            {
                ctx.Dispose();
            }
        }
Beispiel #3
0
 /// <summary>
 /// Raises the <see cref="E:System.Windows.Forms.Control.HandleDestroyed"/> event.
 /// </summary>
 /// <param name="e">
 /// An <see cref="T:System.EventArgs"/> that contains the event data.
 /// </param>
 protected override void OnHandleDestroyed(EventArgs e)
 {
     if (DesignMode == false)
     {
         if (_RenderContext != null)
         {
             // Raise DestroyContext event
             _RenderContext.MakeCurrent(true);
             RaiseGraphicsContextDestroyed(new GraphicsControlEventArgs(_RenderContext, _RenderWindow));
             _RenderContext.MakeCurrent(false);
             // Dispose the renderer context
             _RenderContext.Dispose();
             _RenderContext = null;
         }
         // Dispose the renderer window
         if (_RenderWindow != null)
         {
             _RenderWindow.Dispose();
             _RenderWindow = null;
         }
     }
     // Base implementation
     base.OnHandleDestroyed(e);
 }