Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl glTextureSubImage3D()在图像输入量较小时行为不正常_Opengl_Opengl 3 - Fatal编程技术网

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