我在我的窗口系统中使用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 - 我忘了提到用鼠标调整窗口大小一些时间会产生好的图像。我想当我得到恰到好处的分辨率时会发生这种情况。
答案 0 :(得分:3)
您的问题的解决方案是要么考虑每行末尾的额外字节,而不是4宽的倍数(跳过它们),要么将GL_PACK_ALIGNMENT
更改为1(使用{ {1}})。
(见上面的评论)