创建宽度和高度等于零的纹理有什么用?

时间:2014-04-24 10:56:50

标签: opengl textures

如果Opengl允许创建width = height = 0的纹理,那么指定其他参数(如内部格式,格式等)的用途是什么。其次,这种纹理的用途是什么。

1 个答案:

答案 0 :(得分:4)

要理解为什么要这样,请记住纹理有多个LOD。

默认情况下,由于默认的最小/最大LOD,您实际上有 1000 图像,其中 0 宽度和 0 高度/纹理。这实际上很好,只要你不尝试应用mipmap缩小过滤器。较新版本的GL将指的是某些但并非所有LOD都被分配为 mipmap incomplete 而不是调用整个纹理不完整的情况。

如果你看glTexStorage2D (...),你会注意到无法创建 0 宽度, 0 高度或 0 <的纹理/ strong> LOD,因为它必须为 完整 纹理创建存储空间。

如果需要,可以使用glTexImage2D (...)创建mipmap不完整纹理,实际上如果没有正确设置LOD参数,通常会这样做。同样,将纹理LOD调整为 0x0 将有效地释放其内存。这允许您删除mipmap而无需重新分配并将基本LOD发送到GL。

你是否觉得有用是另一回事,但这是glTexStorage2D (...)无法做到的事情。