如何确定调用glTexImage3D()的数据长度(以字节为单位)?

时间:2019-02-08 20:32:34

标签: opengl trace opengl-4

我正在跟踪一些gl调用,并想记录传递到glTexImage3D()中的数据。我需要知道数据有多少个字节长。

它的开始很容易:

size_t num_pixels = width*height*depth;

但是我不确定在给定internalformatformattype的情况下确定每个像素的字节的正确方法吗?

format会给我颜色分量吗?和type给我每个颜色分量的位数?

1 个答案:

答案 0 :(得分:2)

internalformat 参数与计算像素传输操作中存储的数据无关。仅 format type 很重要。

嗯,实际上不是“唯一”。请参阅, format type 结合起来确定像素数据值的大小( format 告诉您数据中有多少个通道,这些通道的顺序,以及数据是浮点数还是整数; type 告诉您如何存储通道或像素值。但是要确定如何从像素到像素,从一行到一行以及从2D图像到2D图像移动,则需要更多。

您需要的是所有GL_UNPACK_* state, whose values are set by the glPixelStoreGL_UNPACK_ALIGNMENT告诉您像素数据每一行的对齐方式。您需要这样做才能从一行跳到另一行。还有其他UNPACK状态,允许用户选择要从其上载的子矩形。如果要解释在所有情况下上传的内容,则必须使用glGetIntegerv来获取所有UNPACK参数的全部并按标准指定的方式对其进行解释。