Я выполняю рендеринг в объект закадрового буфера OpenGL и хочу сохранить его как изображение. Обратите внимание, что FBO больше, чем размер дисплея. Я могу сделать рендеринг в внеэкранный буфер и использовать его как текстуру, которая работает. Я могу «прокрутить» эту большую текстуру по дисплею, используя смещение, что позволяет мне быть уверенным, что я рендерим в более широкий контекст, чем окно.
Если я сохраняю внеэкранный буфер в файл изображения, он всегда обрезается. Фрагмент кода для сохранения:
void ofFBOTexture::saveImage(string fileName) {
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
// get the raw buffer from ofImage
unsigned char* pixels = imageSaver.getPixels();
glReadPixels(0, 0, 1024, 1024, GL_RGB, GL_UNSIGNED_BYTE, pixels);
imageSaver.saveImage(fileName);
}
Обратите внимание, что содержимое изображения обрезано, видимая часть сохранена правильно (что означает отсутствие ошибок в форматах пикселей, проблемы GL_RGB и т. Д.), Но оставшееся пространство заполнено одним цветом.
Итак, мой вопрос - что я делаю не так?