чтение данных пикселей из кадрового буфера

Я пишу интерфейс в qt, используя opengl, и у меня есть 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, поэтому я не совсем уверен, что происходит.

3

Решение

Если вы храните каждый компонент как отдельный элемент в вашем массиве, тогда массив должен иметь тип 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] << " ";
}
}
4

Другие решения


По вопросам рекламы [email protected]