Я пытаюсь использовать glReadPixels
для извлечения данных изображения с помощью следующего кода:
std::array<unsigned char, 3 * height * width> data;
glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, data.data());
Изображение идеально, когда ширина кратна 4 (высота кажется произвольной).Однако, когда это не так, я получаю ошибку времени выполнения:
*** stack smashing detected ***: <unknown> terminated
Так, например, следующие пары (ширина, высота) работают нормально:
(20,20),(20,21),(20,22),(20,23),(20,24)
(24,20),(24,21),(24,22),(24,23),(24,24)
Следующий выход "ошибки "разбивания стека":
(21,20),(22,20),(23,20)
Я бы предположил, что происходит некоторое заполнение, но я не вижу упоминаний об этом на веб-сайте OpenGL:
https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glReadPixels.xml
Может ли кто-нибудь указать мне какую-то документацию, объясняющую, сколько места я должен выделить, и как выглядит отступ?