Я пытаюсь сохранить изображение размером 5x5 пикселей, прочитанное с помощью glReadPixels в файл с помощью SOIL.
Я читаю пиксели:
int x = 400;
int y = 300;
std::vector< unsigned char* > rgbdata(4*5*5);
glReadPixels(x, y, 5, 5,GL_RGBA,GL_UNSIGNED_BYTE, &rgbdata[0]);
Затем я пытаюсь сохранить прочитанные данные с помощью функции сохранения изображения SOIL.
int save_result = SOIL_save_image
(
"image_patch.bmp",
SOIL_SAVE_TYPE_BMP,
5, 5, 4,
rgbdata[0]
);
Но при попытке сохранить изображение я получаю необработанное исключение.
Решение (автор Кристиан Рау)
int x = 400;
int y = 300;
std::vector< unsigned char > rgbdata(4*5*5);
glReadPixels(x-(5/2), y-(5/2), 5, 5,GL_RGBA,GL_UNSIGNED_BYTE, &rgbdata[0]);
int save_result = SOIL_save_image
(
"image_patch.bmp",
SOIL_SAVE_TYPE_BMP,
5, 5, 4,
rgbdata.data()
);