我正在使用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;
}发布于 2021-01-20 23:57:22
配对选项:
glReadPixels(),glReadPixels(),并使用缝合成单个较大图像的最终过程https://stackoverflow.com/questions/65812476
复制相似问题