Я пытаюсь прочитать данные текстуры из графического процессора, чтобы сохранить их в файле изображения, используя glGetTexImage
Но когда я открываю изображение, я получаю смесь пикселей вместо ожидаемого результата.
char buffer[size.x * size.y]; // simple one channel buffer
// Copy source to local buffer
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, source);
glGetTexImage(GL_TEXTURE_2D, 0, GL_UNSIGNED_BYTE, GL_ALPHA, buffer);
saveImage("before.pgm", buffer, size.x, size.y);
Во время создание текстуры я делаю так:
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
// Define texture characteristics with no data. It will be filled later
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, size.x, size.y, 0, GL_ALPHA, GL_UNSIGNED_BYTE, 0);
/* We require 1 byte alignment when uploading or downloading texture data */
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ALIGNMENT, 1);