我正在跟踪一些gl调用,并想记录传递到glTexImage3D()中的数据。我需要知道数据有多少个字节长。
它的开始很容易:
size_t num_pixels = width*height*depth;
但是我不确定在给定internalformat
,format
和type
的情况下确定每个像素的字节的正确方法吗?
format
会给我颜色分量吗?和type
给我每个颜色分量的位数?
答案 0 :(得分:2)
internalformat 参数与计算像素传输操作中存储的数据无关。仅 format 和 type 很重要。
嗯,实际上不是“唯一”。请参阅, format 和 type 结合起来确定像素数据值的大小( format 告诉您数据中有多少个通道,这些通道的顺序,以及数据是浮点数还是整数; type 告诉您如何存储通道或像素值。但是要确定如何从像素到像素,从一行到一行以及从2D图像到2D图像移动,则需要更多。
您需要的是所有GL_UNPACK_*
state, whose values are set by the glPixelStore
。 GL_UNPACK_ALIGNMENT
告诉您像素数据每一行的对齐方式。您需要这样做才能从一行跳到另一行。还有其他UNPACK
状态,允许用户选择要从其上载的子矩形。如果要解释在所有情况下上传的内容,则必须使用glGetIntegerv
来获取所有UNPACK
参数的全部并按标准指定的方式对其进行解释。