我跟踪了一些GL调用,并希望记录()传递到glTexImage3D数据。我需要知道有多少字节的数据。
它开始容易:
size_t num_pixels = width*height*depth;
但我不知道正确的方法来确定每个像素给出internalformat
,format
和type
字节?
是否format
给我颜色分量?和type
给我每个颜色分量的位数?
所述internalformat参数无关搞清楚存储在像素传送操作的数据;只有格式化和物质类型。
哦,不是“唯一”其实。见,格式和类型相结合,确定像素的价值的数据(格式告诉你有多少通道中的数据,这些通道的顺序,以及数据是否是浮点或整数的大小,类型告诉你如何信道或像素值被存储)。不过,以确定如何从像素移动像素,逐行,和2D图像以2D图像,你需要更多。
你需要的是所有的GL_UNPACK_*
state, whose values are set by the glPixelStore
的。 GL_UNPACK_ALIGNMENT
告诉你的像素数据的每一行的对齐方式。你需要这个以行与行跳。还有其他UNPACK
状态,它允许用户选择一个子矩形从上传。如果你想解释什么得到在所有情况下上传的,你必须使用glGetIntegerv
获得所有这些UNPACK
参数,并解释它们作为标准规定。