如果Opengl允许创建width=height=0的纹理,那么指定其他参数(如内部格式、格式等)有什么用?其次,这种纹理有什么用。
要理解为什么要这样做,请记住纹理有多个LOD
默认情况下,由于默认的最小/最大LOD,每个纹理的宽度和高度分别为0和0的1000图像。这其实很好,只要你不尝试应用mipmap缩小过滤器。GL的较新版本将指的是这样一种情况,即某些但不是所有LOD都被分配为mipmap不完整,而不是称整个纹理不完整。
如果查看glTexStorage2D (...)
,您会注意到不可能创建具有0宽度、0高度或零LOD的纹理,因为它必须为完整纹理创建存储。
如果需要,可以使用glTexImage2D (...)
创建mipmap不完整纹理,事实上,如果未正确设置LOD参数,通常会这样做。同样,将纹理LOD调整为0x0将有效地释放其内存。这允许您删除mipmaps,而无需重新分配并将基本LOD发送给GL。
是否有用是另一回事,但这是glTexStorage2D (...)
无法做到的。