我正在使用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;
}
耦合选项:
- 渲染到大于默认帧缓冲区的FBO&
glReadPixels()
- 渲染到多个平铺&
glReadPixels()
那些,用一针扎成单个较大的图像最后一遍