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



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

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

默认情况下,由于默认的最小/最大LOD,每个纹理的宽度和高度分别为001000图像。这其实很好,只要你不尝试应用mipmap缩小过滤器。GL的较新版本将指的是这样一种情况,即某些但不是所有LOD都被分配为mipmap不完整,而不是称整个纹理不完整。

如果查看glTexStorage2D (...),您会注意到不可能创建具有0宽度、0高度或LOD的纹理,因为它必须为完整纹理创建存储。

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

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

最新更新