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