title: How do I load textures to OpenGL using FreeImage library?
body: <p>I'm learning OpenGL in C++ using NeHe tutorials, but I'm trying to do them with FreeImage library, instead of Glaux or SOIL. The good point I see in using FreeImage is thar it's last update was in October last year, while SOIL hasn't been updated in 5 years. The problem I have is that I'm not able to load textures correctly.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>static GLuint texture = 0;
  if (texture == 0)
  {
      FIBITMAP* bitmap = FreeImage_Load(
          FreeImage_GetFileType("textures/test/nehe_06.png", 0),
          "textures/test/nehe_06.png");
  
      glGenTextures(1, &amp;texture);
  
      glBindTexture(GL_TEXTURE_2D, texture);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  
      glTexImage2D(GL_TEXTURE_2D, 0, 3, FreeImage_GetWidth(bitmap), FreeImage_GetHeight(bitmap),
          0, GL_RGB, GL_UNSIGNED_BYTE, FreeImage_ConvertTo32Bits(bitmap));
  
      FreeImage_Unload(bitmap);
  }
  </code></pre>
  
  <p>Using this code, the texture I get is wrong: it's black, with coloured dots and strips, and changing the image gives the same result, so I assume I'm not loading the texture correctly.</p>
  
  <p>I've tried to swap the red and blue bits (read that FreeImage loads in BGR) with no better result. Finally, if I change the *FreeImage_ConvertTo32Bits(bitmap)* by *FreeImage_GetBits(bitmap)* I get a segfault.</p>
  
  <p>What I'm doing wrong?</p>