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



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

一开始很容易:

size_t num_pixels = width*height*depth;

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

format给我颜色成分吗?和CCD_ 5给了我每个颜色分量的比特数?

internalformat参数与计算像素传输操作中存储的数据无关;只有格式类型重要。

实际上,不是"唯一"。请参阅,formattype组合可确定像素数据的大小(form告诉数据中有多少个通道、这些通道的顺序以及数据是浮点还是整数;type告诉您如何存储通道或像素值)。但是,要确定如何从一个像素移动到另一个像素,从一行移动到一行,从2D图像移动到2D图像,还需要更多。

您需要的是所有GL_UNPACK_*状态,其值由glPixelStore设置。GL_UNPACK_ALIGNMENT告诉每行像素数据的排列。你需要这样才能从一行跳到另一行。还有其他UNPACK状态,允许用户选择一个子矩形进行上传。如果您想解释在所有情况下上传的内容,则必须使用glGetIntegerv获取这些UNPACK参数中的所有,并按照标准指定进行解释。

相关内容

  • 没有找到相关文章

最新更新