title: Activating Multisample on OpenGL Win32
body: <p>I want to set up MSAA on an OpenGL context in win32 API. Everything is working fine, but the MSAA just doesn't want to activate. Here is my code for building the context:</p>
  
  <pre><code>void Display::CreateGLContext(HWND hWND) {
  mHDC = GetDC(hWND);  //get current windows device context
  
  int nPixelFormat;
  
  PIXELFORMATDESCRIPTOR pfd; // Create a new PIXELFORMATDESCRIPTOR (PFD)  
  memset(&amp;pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); // Clear our  PFD  
  pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); // Set the size of the PFD to the size of the class  
  pfd.dwFlags = PFD_DOUBLEBUFFER | PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW; // Enable double buffering, opengl support and drawing to a window  
  pfd.iPixelType = PFD_TYPE_RGBA; // Set our application to use RGBA pixels  
  pfd.cColorBits = 32; // Give us 32 bits of color information (the higher, the more colors)  
  pfd.cDepthBits = 16; // Give us 32 bits of depth information (the higher, the more depth levels)  
  pfd.iLayerType = PFD_MAIN_PLANE; // Set the layer of the PFD
  
  /*      Choose best matching format*/
  nPixelFormat = ChoosePixelFormat(mHDC, &amp;pfd);
  
  /*      Set the pixel format to the device context*/
  SetPixelFormat(mHDC, nPixelFormat, &amp;pfd);
  
  HGLRC tempRC = wglCreateContext(mHDC);
  wglMakeCurrent(mHDC, tempRC);
  
  if (glewInit() != GLEW_OK) {
      MessageBox(mHWND, "Eroare", "glew", MB_OK);
  }
  int nPixelFormat2;
  
  BOOL bValidPixFormat;
  UINT nMaxFormats = 1;
  UINT nNumFormats;
  float pfAttribFList[] = { 0, 0 };
  int piAttribIList[] = { 
      WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
      WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
      WGL_COLOR_BITS_ARB, 32,
      WGL_RED_BITS_ARB, 8,
      WGL_GREEN_BITS_ARB, 8,
      WGL_BLUE_BITS_ARB, 8,
      WGL_ALPHA_BITS_ARB, 8,
      WGL_DEPTH_BITS_ARB, 16,
      WGL_STENCIL_BITS_ARB, 0,
      WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
      WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_ARB,
      WGL_SAMPLE_BUFFERS_ARB, GL_TRUE,
      WGL_SAMPLES_ARB, 16,
      0, 0 };
  
  bValidPixFormat = wglChoosePixelFormatARB(mHDC, piAttribIList, pfAttribFList, nMaxFormats, &amp;nPixelFormat2, &amp;nNumFormats);
  
  if (!bValidPixFormat)
  {
      MessageBox(NULL, "Invalid Pixel Format", "Error! (SetupWGLPixelFormat)", MB_OK);
  }
  
  SetPixelFormat(mHDC, nPixelFormat2, &amp;pfd);
  
  
  mGLRenderContext = wglCreateContext(mHDC);
  
  wglMakeCurrent(mHDC, NULL);
  wglDeleteContext(tempRC);
  wglMakeCurrent(mHDC, mGLRenderContext);
  
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_CULL_FACE);
  glCullFace(GL_BACK);
  }
  </code></pre>
  
  <p>The code works fine, it is called after creating hWnd in the main class, not in WndProc on the WM_CREATE case... What can be wrong?</p>