问题描述
我使用 OpenGL
来模拟对象。并且使用stbi_write_png
保存图片,但是图片大小只有200K多,放大后不是很清晰。所以想知道C++有没有其他保存高清图片的方法代码。
我的代码显示如下:
int SaveScreenshot(const char *filename)
{
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT,viewport);
int x = viewport[0];
int y = viewport[1];
int width = viewport[2];
int height = viewport[3];
char *data = (char*)malloc((size_t)(width * height * 4)); // 3 components (R,G,B)
if (!data)
return 0;
glPixelStorei(GL_PACK_ALIGNMENT,1);
glreadPixels(x,y,width,height,GL_RGBA,GL_UNSIGNED_BYTE,data);
stbi_flip_vertically_on_write(1);
int saved = stbi_write_png(filename,4,data,0);
free(data);
return saved;
}
解决方法
几个选项:
- 渲染到比默认帧缓冲区更大的 FBO &
glReadPixels()
- 渲染到 multiple tiles 和
glReadPixels()
那些,最终通过拼接成单个更大的图像