再将纹理拷贝到PBO时,glGetTexImage无法获得正确的值

测试代码如下:
Glubyte data[1][1][1];
Glubyte pixel[1][1][1];

data[0][0][0] = 8;

glGenTexture(1,&texname);
glBindTexture(GL_TEXTURE_3D,texname);
glTexImage3D(GL_TEXTURE_3D,0,GL_ALPHA,1,1,1,GL_ALPHA,GL_UNSIGNED_BYTE,data);
glGetTexImage(GL_TEXTURE_3D,0,GL_ALPHA,GL_UNSIGNED_BYTE,pixel);

这样得到的pixel[0][0][0]并等于8,这是怎么回事?

问风辰

呵呵 我也觉得这问题问风辰最好

同意

同意个鸟!
在将数据传入FBO之前设置像素对齐格式:glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );因为OGL实现中默认是四字节对齐的,而你所用的数据排列的,所以实际中像素的存储会是:( X,X,X,alpha )的形式,自然不对。

[ 本帖最后由 cyrosly 于 2011-2-16 16:38 编辑 ]