整个问题都在标题中。
我真的很想知道为什么这个扩展程序使用浮点类型而不是整数。我知道如果您使用任意值,它将在不超过最大级别的情况下工作。但我一直认为这个值应该是2的整数倍。
GL_EXT_texutre_filter_anisotropic
完全将实际实现细节留给实现者:各向异性纹理过滤的特定方案取决于实现。此外,实现可以自由考虑当前纹理缩小和放大模式来控制所使用的各向异性过滤方案的具体细节。
所以实际上一个小数的各向异性设置可能会有所不同。但我始终认为这个值应该是2的整数倍。
实际上,大多数GPU确实使用某种方案,其中限制实际上是2的幂。如果您有一个各向异性因子x=2^i
并且要访问mipmap级别m
,则滤波器基本上可以从(更高分辨率的)mipmap级别m-i
中获取x
个样本。
此外,请注意,可以通过gl [Get]TexParameteri *()
显式设置或查询aniso设置,因此您实际上可以在代码中使用完全基于整数的设置,并假装浮点参数根本不存在。