Example #1
0
        /// <summary>
        /// Get the OpenGL context current on the calling thread.
        /// </summary>
        /// <returns>
        /// It returns the handle of the OpenGL context current on the calling thread. It may return <see cref="IntPtr.Zero"/>
        /// indicating that no OpenGL context is current.
        /// </returns>
        public static IntPtr GetCurrentContext()
        {
#if !MONODROID
            if (Egl.IsRequired == false)
            {
                switch (Platform.CurrentPlatformId)
                {
                case Platform.Id.WindowsNT:
                    return(Wgl.GetCurrentContext());

                case Platform.Id.Linux:
                    return(Glx.GetCurrentContext());

                case Platform.Id.MacOS:
                    if (Glx.IsRequired)
                    {
                        return(Glx.GetCurrentContext());
                    }
                    else
                    {
                        throw new NotSupportedException("platform MacOS not supported without Glx.IsRequired=true");
                    }

                default:
                    throw new NotSupportedException(String.Format("platform {0} not supported", Platform.CurrentPlatformId));
                }
            }
            else
#endif
            return(Egl.GetCurrentContext());
        }
Example #2
0
		/// <summary>
		/// Makes the context current on the calling thread.
		/// </summary>
		/// <param name="ctx">
		/// A <see cref="IntPtr"/> that specify the context to be current on the calling thread, bound to
		/// thise device context. It can be IntPtr.Zero indicating that no context will be current.
		/// </param>
		/// <returns>
		/// It returns a boolean value indicating whether the operation was successful.
		/// </returns>
		/// <exception cref="NotSupportedException">
		/// Exception thrown if the current platform is not supported.
		/// </exception>
		public override bool MakeCurrent(IntPtr ctx)
		{
			// Avoid actual call to wglMakeCurrent if it is not necessary
			// Efficient on simple/nominal applications
			IntPtr currentContext = Wgl.GetCurrentContext(), currentDc = Wgl.GetCurrentDC();
			if (ctx == currentContext && _DeviceContext == currentDc)
				return (true);

			// Base implementation
			return (base.MakeCurrent(ctx));
		}