如何通过stbi_write_png保存高清图片



我正在使用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, width, height, 4, data, 0);
free(data);
return saved;
}

耦合选项:

  1. 渲染到大于默认帧缓冲区的FBO&glReadPixels()
  2. 渲染到多个平铺&glReadPixels()那些,用一针扎成单个较大的图像最后一遍

最新更新