镜像(翻转)使用SOIL_load_image

时间:2015-04-26 18:42:51

标签: c++ jpeg soil

我使用命令

使用libianil-dev成功加载了一个.jpg图像
    uchar* img = SOIL_load_image(pfname_texture.c_str(),
      &img_width, &img_height, NULL, 0);

后两个参数是 int * channels int force_channels 无论细节可能意味着什么,但它们似乎触及像alpha通道这样的东西。

使用上述命令,我知道图像的宽度和高度。

现在我想要水平翻转它(意味着左右边缘切换边)。如果我知道 uchar * img 的大小,这将很容易。然而,事实并非如此,因为我无法确定有多少 uchars 组成一个像素。另外,我不知道像素在内存中是如何排序的(按行,列,从上到下,反之亦然,你可以命名)。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过以不同方式映射纹理,例如:

glBegin(GL_QUADS);
glTexCoord2f(1, 1); glVertex3f(0, 798, 0); // 0, 1
glTexCoord2f(1, 0); glVertex3f(0, 0, 0); // 0, 0
glTexCoord2f(0, 0); glVertex3f(1280, 0, 0); // 1, 0
glTexCoord2f(0, 1); glVertex3f(1280, 798, 0); // 1, 1
glEnd();

这里我将glTexCoord2f(第一个参数)中的x坐标与其相反,因此glTexCoord2f(1,1)将变为glTexCoord2f(0,1)。