我感觉这是依赖于驱动程序实现的情况之一,因为OpenGL规范中没有描述这种情况。但是,我希望有人知道在不生成MIP地图的情况下使用GL_(LINEAR / NEAREST)_ MIPMAP_ *是否与使用GL_(LINEAR / NEAREST)相同?
答案 0 :(得分:3)
定义“没有任何活动的MIP纹理”?我不确定你会怎么做,因为没有“mip texture”(纹理包含 mipmaps,但mipmaps不是纹理)。
如果您的意思是没有创建完整的mipmap金字塔,那么这取决于您设置GL_TEXTURE_BASE/MAX_LEVEL
的方式。如果你正确地使用它们告诉OpenGL你只有一个mipmap级别,那么你会没事的。如果您使用glTexStorage
来创建纹理的存储空间,并且只告诉它创建一个mipmap,那么你也可以。
但是,如果这些都不适用,那么OpenGL默认为最不实用的东西(按照惯常的惯用法):它将GL_TEXTURE_MAX_LEVEL
级别设置为1000.这意味着它会期望您定义mipmap。 / p>
根据(桌面)OpenGL,具有mipmap过滤的纹理,其中BASE/MAX_LEVEL
s引用未定义的mipmap不是“纹理完整”。 OpenGL定义了针对非完整纹理的纹理访问获得的值是(0,0,0,1)。
简而言之,正确设置BASE/MAX_LEVEL
,您无需担心。 一直这样做。
答案 1 :(得分:1)
根据我的经验,所有未生成的mipmap级别都将默认为黑色。
因此,如果您以1:1的分辨率显示纹理,并逐渐缩小,则在使用第一个mipmap后,它将逐渐变为黑色。
我认为这至少是对NVIDIA和AMD的行为;我从未尝试过powervr(因为你提到了opengl-es)。