使用glReadPixels进行屏幕捕获会导致某些窗口分辨率中的像素移位

时间:2011-07-06 16:20:02

标签: opengl glreadpixels

我在我的窗口系统中使用GLUT将一些图像输出到屏幕上。 我还想将图像输出到文件。这是一个挑战。在某些窗口分辨率(例如256x256,1024x1024,1920x1200)中,glReadPixels会生成与屏幕完全相同的图像文件。然而,当我调整窗口大小时(ex / 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 - 我忘了提到用鼠标调整窗口大小一些时间会产生好的图像。我想当我得到恰到好处的分辨率时会发生这种情况。

1 个答案:

答案 0 :(得分:3)

您的问题的解决方案是要么考虑每行末尾的额外字节,而不是4宽的倍数(跳过它们),要么将GL_PACK_ALIGNMENT更改为1(使用{ {1}})。

(见上面的评论)