How do I load textures to OpenGL using FreeImage library?

前端 未结 2 515
清酒与你
清酒与你 2021-02-03 12:36

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

2条回答
  •  后悔当初
    2021-02-03 13:00

    There are two problems with your code - one is that you are converting to image to 32 bits but you specify a 24 bit texture format to openGL (GL_RGB). The second is that you are passing the FreeImage object itself to the texture rather than the converted bits.

    You need to do something like this instead

    FIBITMAP *pImage = FreeImage_ConvertTo32Bits(bitmap);
    int nWidth = FreeImage_GetWidth(pImage);
    int nHeight = FreeImage_GetHeight(pImage);
    
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, nWidth, nHeight,
        0, GL_BGRA, GL_UNSIGNED_BYTE, (void*)FreeImage_GetBits(pImage));
    
    FreeImage_Unload(pImage);
    

提交回复
热议问题