在OpenGL中导入图片的纹理照片的函数为
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, p_w, p_h, 0, GL_BGR, GL_UNSIGNED_BYTE, pic_data);
其中p_w, p_h为图片的宽和高,pic_data为指向图片存储空间的的地址(unsigned char *类型)
在OpenGL中图片默认是4字节对齐的,也就是p_w默认是4的倍数,如果p_w不是4的倍数,就会发生错位,纹理图片不能正确导入。
下面这个图片就错位了
原始图片为
上面只是发生了错位,好像颜色没有什么变化。其实也有可能颜色也发生变化。
这个问题其实只需要设定OpenGL的对齐方式为1字节就行。
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);