使用
我没有预料到在使用
我没有找到任何官方原因说明为什么需要这样做,我希望不可变纹理的参数是不可变的(并且被很好地初始化)。有人能确认这种行为是否正确吗?或者这可能是AMD驱动程序的错误吗?
glTexImage*
函数分配纹理时,我知道需要将glTexParameteri(GL_TEXTURE_MAX_LEVEL)
设置为合理的值,并指定所有级别直到该值,如此处所述。我没有预料到在使用
glTexStorage*
函数的情况下也需要这样做,因为它们接受层数作为参数并提前为该层数分配内存。尽管如此,我注意到我不能对这种方式定义的不可变纹理进行采样 - 直到我调用了glGenerateMipmap
或将GL_TEXTURE_MAX_LEVEL
指定为levels-1
。我没有找到任何官方原因说明为什么需要这样做,我希望不可变纹理的参数是不可变的(并且被很好地初始化)。有人能确认这种行为是否正确吗?或者这可能是AMD驱动程序的错误吗?
TEXTURE_BASE_LEVEL
和TEXTURE_MAX_LEVEL
作为纹理对象状态(而采样器对象状态具有TEXTURE_MIN_LOD
和TEXTURE_MAX_LOD
)。你能确认一下吗? - Kos