我使用命令
使用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 组成一个像素。另外,我不知道像素在内存中是如何排序的(按行,列,从上到下,反之亦然,你可以命名)。有什么想法吗?
答案 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)。