Есть изображение размером 259x194. При его загрузке с помощью libjpeg начинается "веселье".
Изображение получается сдвинутым примерно на половину.
void JPEGTexture::genData()
{
FILE *f=fopen(filepath.c_str(),"rb");
if (f==NULL) return;
struct jpeg_error_mgr jerr;
struct jpeg_decompress_struct cinfo;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo, f);
jpeg_read_header(&cinfo, TRUE);
imageWidth = cinfo.image_width;
imageHeight = cinfo.image_height;
initTextureSize();
std::vector<unsigned char> buf(3*imageWidth*imageHeight);
jpeg_start_decompress(&cinfo);
for (int y=0;y<imageHeight;y++) {
JSAMPLE *rows[1];
rows[0]=&buf[3*imageWidth*(imageHeight-1-y)];
jpeg_read_scanlines(&cinfo,rows,1);
}
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, getTextureWidth(), getTextureHeight(), 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, getImageWidth(), getImageHeight(),GL_RGB, GL_UNSIGNED_BYTE, &buf[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
this->textureID=texture;
jpeg_destroy_decompress(&cinfo);
fclose(f);
}
не получается исправить проблему с выравниванием