有没有人使用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;
}
为什么我总是得到黑色图像?
答案 0 :(得分:0)
您没有设置从哪个缓冲区读取。如果你想在缓冲区交换之后截取屏幕,那么你必须从前端缓冲区读取。如果你想在缓冲区交换之前截取屏幕,请从后台缓冲区中读取。