FreeImage将图像加载到OpenGL中

时间:2016-11-26 17:58:43

标签: c++ opengl freeimage

enter image description here以前,我使用教程bmp加载器使用加载器将位图(.bmp)加载到OpenGL纹理中,但我希望能够加载不同的纹理,所以尝试FreeImage。

我正在尝试删除伽玛校正,但使用FreeImage时图像无法正确显示。

以前我用过:

glTexImage2D(GL_TEXTURE_2D,
             0, 
             TextureFormatForBitmapFormat(bmp.PixelFormat(), true),
             (GLsizei)bmp.Width(), 
             (GLsizei)bmp.Height(),
             0, 
             TextureFormatForBitmapFormat(bmp.PixelFormat(), false), 
             GL_UNSIGNED_BYTE, 
             bmp.PixelBuffer());
glBindTexture(GL_TEXTURE_2D, 0);

GLenum OpenGLTexture::TextureFormatForBitmapFormat(Bitmap::Format format
    , bool srgb)
{
    switch (format)
    {
       case Bitmap::Format_Grayscale: return GL_LUMINANCE;
       case Bitmap::Format_GrayscaleAlpha: return GL_LUMINANCE_ALPHA;
       case Bitmap::Format_RGB: return (srgb ? GL_SRGB : GL_RGB);
       case Bitmap::Format_RGBA: return (srgb ? GL_SRGB_ALPHA : GL_RGBA);
       default: throw std::runtime_error("Unrecognised Bitmap::Format");
    }
}

使用FreeImage,代码:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, (GLsizei)width, 
             (GLsizei)height, 0, GL_BGRA,
             GL_UNSIGNED_BYTE, (void*)FreeImage_GetBits(img));

问题在于使用FreeImage,我从中得到了一个非常“平淡”的光。有没有办法有效地重现我之前在FreeImage中所做的事情?

提前谢谢你;)

0 个答案:

没有答案