glTextureSubImage3D()在图像输入较小时表现不正常

问题描述 投票:0回答:1

创建2D纹理数组后

glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RED, 1024, 1024, 1, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);

我使用glTexSubImage3D()函数逐段上传图像数据

glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 66, 66, 1, GL_RED, GL_UNSIGNED_BYTE, data);

[图像被上传,但是方式不正确。它似乎被涂抹了,好像它使用的是不同的音高而不是66字节。这是在使用最新驱动程序的NVIDIA卡上。

[如果我将图像的宽度改为100像素(而不是99),这很有趣,上传正常。任何想法可能出什么问题吗?

opengl opengl-3
1个回答
0
投票

发现了问题。 OpenGL的初始默认像素对齐方式为4,即使您指定像素数据格式为GL_RED。

通过将行对齐方式更改为1个字节

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

问题解决了。

© www.soinside.com 2019 - 2024. All rights reserved.