3

我正在为我的窗口系统使用 GLUT 将一些图像输出到屏幕上。我还想将图像输出到文件。这是一个挑战。在某些窗口分辨率(如 256x256、1024x1024、1920x1200)下,glReadPixels 会生成与屏幕完全相同的图像文件。但是,当我调整窗口大小(例如 / 655x652、529x566 并进行屏幕捕获时,图像会出现锯齿状,并且看起来像素已经线性移动。

任何帮助将不胜感激!

编辑 - 我正在添加一些导致 glReadPixels 调用的代码。

glGetIntegerv(GL_VIEWPORT, dimensions);
width = dimensions[2];
height = dimensions[3];
screencapture = (unsigned char*)malloc(width*height*sizeof(unsigned char));
glReadPixels(0,0,width, height, GL_GREEN, GL_UNSIGNED_BYTE, screencapture);

EDIT2 - 我忘了提到用鼠标调整窗口大小有时会产生好的图像。我想当我得到正确的分辨率时会发生这种情况。

4

1 回答 1

3

解决您的问题的方法是考虑每行末尾不是 4 倍宽的额外字节(跳过它们),或者更改GL_PACK_ALIGNMENT为 1(使用glPixelStore)。

(见我上面的评论)

于 2011-07-06T17:14:03.620 回答