OpenGL glTexSubImage 数据打包

OpenGL glTexSubImage Data Packing

当使用 OpenGL 的 glTexSubImage2D 和 glTexSubImage3D 函数时,子图像不等于纹理的实际尺寸,数据指针应该包含打包的数据以匹配实际纹理尺寸还是子图像的尺寸?

例如,如果您有一个简单的 3x3 纹理,并且您只想上传中心像素,则子图像的 x 偏移量为 1,y 偏移量为 1,宽度为 1,高度为 1,并且您会打电话给...

glTexSubImage2D(GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RED, GL_UNSIGNED_BYTE, data)

data 应该像 { 255 } 还是像 { 0, 0, 0, 0, 255, 0, 0, 0, 0 }

纹理的大小无关紧要。

子区域的大小已更新。具体来说,glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data) 期望 data 指向适当类型和格式的大小 (width, height) 的矩形图像。数据从内存中解包的方式由 GL_UNPACK_ALIGNMENTGL_UNPACK_ROW_LENGTH 和朋友控制。见 OpenGL specification §8.4 Pixel Rectangles.

在您的特定情况下,data 必须指向单个值,例如 { 255 }