2015-04-26 42 views
0

我已成功加载使用库libsoil-dev的为.jpg图像作为发现为Debian使用命令镜(触发器)使用SOIL_load_image

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

后两个参数是INT *通道中加载的图像JPGint force_channels无论这可能意味着详细,但他们似乎触摸像alpha通道的东西。

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

现在我想水平触发它(意思是左边和右边切换边)。如果我知道uchar * img的尺寸,这将很容易。然而,我不这样认为,因为我不能确定有多少组成一个像素。另外,我不知道像素是如何在内存中排列的(从上到下,按列向上,反之亦然)。有任何想法吗?

+0

从教程中使用的阅读代码我偶然发现有关glTexImage2D(..,type = GL_UNSIGNED_BYTE,..)。鉴于我的程序起作用(忽略镜像纹理),这似乎是一个像素的大小。这总是如此吗?另外:仍然缺少订购信息... –

+0

回到我自己的问题......这似乎很有用:https://www.opengl.org/wiki/Pixel_Transfer#Pixel_layout –

回答

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(); 

这里我切换的x坐标在glTexCoord2f(第一个参数)与它的对面,所以glTexCoord2f(1,1)将成为glTexCoord2f( 0,1)。