0

我已经使用库 libsoil-dev 成功加载了 .jpg 图像,使用命令为 Debian 找到

    uchar* img = SOIL_load_image(pfname_texture.c_str(),
      &img_width, &img_height, NULL, 0);

后两个参数是int* channelsint force_channels任何可能的详细含义,但它们似乎涉及 alpha 通道之类的东西。

使用所述命令,我知道图像的宽度和高度(以像素为单位)。

现在我想水平翻转它(意味着左右边缘交换边)。如果我知道uchar* img的大小,这将很容易。但是,就目前情况而言,我不知道,因为我无法确定一个像素有多少个 uchar 。另外,我不知道像素在内存中是如何排序的(按行、按列、从上到下或反之亦然,你可以命名它)。有任何想法吗?

4

1 回答 1

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)。

于 2016-03-03T21:47:03.120 回答