从帧缓冲区读取像素数据

reading pixel data from framebuffer

我正在使用 opengl 在 qt 中编写一个界面,我有一个 QGLWidget,它在屏幕上绘制了一些顶点。

我正在尝试更改像素数据以使图像更亮,但是 glreadpixels 给出了非常奇怪的结果

我正在将像素读取到 3 维数组中,以便查看位置和 RGB 值。

这是我的一些代码

GLuint pixels[w][h][3];
glReadPixels( 0, 0, w, h, GL_RGB, GL_INT, pixels)

for(int i = 0; i < w; i++)
     for(int j = 0; j < h; j++)
         cout << pixels[i][j][0] << " ";
         cout << pixels[i][j][1] << " ";
         cout << pixels[i][j][2] << " ";

现在我的目标只是看到打印出的像素数据,但我在终端中得到的输出几乎都是 0,但是当我看到 0 以外的东西时,它非常大,比 4294967295 大得多。

我知道颜色值的范围是 0-255,所以我不太确定发生了什么。

如果您将每个组件作为单独的元素存储在数组中,则数组的类型应为 GLubyte(范围 0-255)。此外,请求的类型应为 GL_UNSIGNED_BYTE:

GLubyte pixels[w][h][3];
glReadPixels( 0, 0, w, h, GL_RGB, GL_UNSIGNED_BYTE, pixels);

for(int i = 0; i < w; i++)
{
     for(int j = 0; j < h; j++)
     {
         cout << +pixels[i][j][0] << " ";
         cout << +pixels[i][j][1] << " ";
         cout << +pixels[i][j][2] << " ";
     }
}