internal override void UpdateDeviceParameters(byte colorBits, byte depth, byte stencil)
		{
			if (GraphicsContext != IntPtr.Zero)
				FreeResources();
			windowContext = GetWindowDC(windowHandle);
			PixelFormatDescriptor descriptor = new PixelFormatDescriptor { Size = 40, Version = 1, PixelType = ColorFormatPixelType.Rgba, ColorBits = colorBits, DepthBits = depth, StencilBits = stencil, LayerType = WglLayerType.PfdMainPlane, Flags = PixelFormatFlags, RedBits = 8, GreenBits = 8, BlueBits = 8 };
			if (colorBits == 32)
				descriptor.AlphaBits = 8;
			int cacheKey = colorBits + (depth << 8) + (stencil << 16);
			int flag;
			if (PixelFormatCache.ContainsKey(cacheKey))
				flag = PixelFormatCache[cacheKey];
			else
			{
				flag = ChoosePixelFormat(windowContext, ref descriptor);
				PixelFormatCache.Add(cacheKey, flag);
			}
			SetPixelFormat(windowContext, flag, ref descriptor);
			GraphicsContext = CreateContext(windowContext);
			MakeCurrent();
			LoadExtensions();
		}
		private static extern bool SetPixelFormat(IntPtr dc, int format, ref PixelFormatDescriptor pfd);
		public static extern int ChoosePixelFormat(IntPtr deviceContext, ref PixelFormatDescriptor pPfd);