Opengl glTextureSubImage3D()在图像输入量较小时行为不正常
使用创建二维纹理阵列后Opengl glTextureSubImage3D()在图像输入量较小时行为不正常,opengl,opengl-3,Opengl,Opengl 3,使用创建二维纹理阵列后 glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RED, 1024, 1024, 1, 0, GL_RED, GL_UNSIGNED_BYTE, NULL); 我使用函数glTexSubImage3D()一部分一部分地上传图像数据 图像已上载,但方式不正确。它似乎被涂抹了,好像它使用了不同的音高而不是66字节。这是一个NVIDIA卡使用相当新的驱动程序 有趣的是,如果我将图像改为100像素宽(但不是99像素),那么上传就可以正常工作。知道
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RED, 1024, 1024, 1, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);
我使用函数glTexSubImage3D()一部分一部分地上传图像数据
图像已上载,但方式不正确。它似乎被涂抹了,好像它使用了不同的音高而不是66字节。这是一个NVIDIA卡使用相当新的驱动程序
有趣的是,如果我将图像改为100像素宽(但不是99像素),那么上传就可以正常工作。知道哪里出了问题吗?发现了问题。OpenGL的初始默认像素对齐为4,即使您指定像素数据格式为GL_红色 通过将行对齐方式更改为1字节
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
问题消失了
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);