为什么在尝试使用免费图像库保存opengl缓冲区时总是会出现黑色图像?

时间:2014-10-16 16:09:13

标签: c opengl freeimage

有没有人使用freeimage库来保存opengl缓冲区?

这是我的代码:

void screenshot(const char *ptr){
    GLint viewPort[4]; 
    glGetIntegerv(GL_VIEWPORT, viewPort);  
    GLubyte *pixels=new GLubyte[3*winWidth*winHeight];
    glPixelStorei(GL_PACK_ALIGNMENT, 1);
    glReadPixels(0, 0, viewPort[2],viewPort[3], GL_RGB, GL_UNSIGNED_BYTE, pixels);  
    FIBITMAP* image = FreeImage_ConvertFromRawBits(pixels,viewPort[2], viewPort[3],3*viewPort[2] 
    ,24,FI_RGBA_RED, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK,false);
    FreeImage_Save(FIF_BMP, image, ptr, 0);
    FreeImage_Unload(image);
    delete pixels;
}

为什么我总是得到黑色图像?

1 个答案:

答案 0 :(得分:0)

您没有设置从哪个缓冲区读取。如果你想在缓冲区交换之后截取屏幕,那么你必须从前端缓冲区读取。如果你想在缓冲区交换之前截取屏幕,请从后台缓冲区中读取。