title: Can't load .png image using opengl texture
body: <pre><code>#include &lt;stdio.h&gt;
  #include &lt;GL/gl.h&gt;
  #include &lt;GL/glut.h&gt;
  
  #define KEY_ESCAPE 27
  
  void display();
  void keyboard(unsigned char,int,int);
  GLuint LoadTextureRAW( const char * filename, int wrap );
  
  int main(int argc, char **argv) {
      glutInit(&amp;argc, argv);                                    
      glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH );
      glutInitWindowSize(600,400);                  
      glutCreateWindow("Opengl Test");                              
      glutDisplayFunc(display);
      glutKeyboardFunc(keyboard);
      glutMainLoop();
      return 0;
  }
  void display() {
      GLuint texture=LoadTextureRAW("ball.png",1);
      glEnable(GL_TEXTURE_2D);
      glBindTexture(GL_TEXTURE_2D,texture);
      glBegin( GL_QUADS );
      glTexCoord2d(0.0,0.0); glVertex2d(0.0,0.0);
      glTexCoord2d(1.0,0.0); glVertex2d(1.0,0.0);
      glTexCoord2d(1.0,1.0); glVertex2d(1.0,1.0);
      glTexCoord2d(0.0,1.0); glVertex2d(0.0,1.0);
      glEnd();
      glutSwapBuffers();    
  }
  // load a 256x256 RGB .RAW file as a texture
  GLuint LoadTextureRAW( const char * filename, int wrap )
  {
      GLuint texture;
      int width, height;
  //    BYTE * data;
      int *data;
      FILE * file;
  
      // open texture data
      file = fopen( filename, "rb" );
      if ( file == NULL ) return 0;
  
      // allocate buffer
      width = 256;
      height = 256;
      data = (int*)malloc( width * height * 3 );
  
      // read texture data
      fread( data, width * height * 3, 1, file );
      fclose( file );
  
      // allocate a texture name
      glGenTextures( 1, &amp;texture );
  
      // select our current texture
      glBindTexture( GL_TEXTURE_2D, texture );
  
      // select modulate to mix texture with color for shading
      glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
  
      // when texture area is small, bilinear filter the closest mipmap
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
                       GL_LINEAR_MIPMAP_NEAREST );
      // when texture area is large, bilinear filter the first mipmap
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
  
      // if wrap is true, the texture wraps over at the edges (repeat)
      //       ... false, the texture ends at the edges (clamp)
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
                       wrap ? GL_REPEAT : GL_CLAMP );
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
                       wrap ? GL_REPEAT : GL_CLAMP );
  
      // build our texture mipmaps
      gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height,
                         GL_RGB, GL_UNSIGNED_BYTE, data );
  
      // free buffer
      free( data );
  
      return texture;
  }
  void keyboard(unsigned char key, int mousePositionX, int mousePositionY) { 
      switch ( key ) {
          case KEY_ESCAPE:
              exit ( 0 );   
              break;      
          default:      
              break;
      }
  }
  </code></pre>
  
  <p>I followed this, <a href="http://www.nullterminator.net/gltexture.html" rel="nofollow">http://www.nullterminator.net/gltexture.html</a></p>
  
  <p>What should i do?</p>