opengl - 为什么OpenGL使用float来定义各向异性过滤的级别?
问题描述
整个问题都在标题中。
我真的很想知道为什么这个扩展使用浮点类型而不是 int。我知道如果你使用任意值,它会一直工作到你没有通过最高级别。但我一直认为这个值应该是2的倍数的整数。
解决方案
因为没有理由不使用浮点数。各向异性或多或少代表了纹理空间中像素(或过滤器)足迹的纵横比。(在透视投影的最一般情况下,像素足迹将是纹理空间中的梯形,并且单个纵横比将只是一个近似值,就好像它是平行四边形一样,但在实践中已经足够了。)所以各向异性值的非整数值在数学上是完全合理的。
完全将GL_EXT_texutre_filter_anisotropic
实际的实现细节留给实现者:
各向异性纹理过滤的特定方案取决于实现。此外,实现可以自由地考虑当前的纹理缩小和放大模式,以控制所使用的各向异性过滤方案的细节。
因此,实际上可以提出一种实现,其中分数 aniso 设置可以产生影响。
但我一直认为这个值应该是2的倍数的整数。
在实践中,大多数 GPU 确实使用某种方案,其中限制实际上是 2 的幂。如果您有 aniso factorx=2^i
并且可以访问 mipmap level m
,则过滤器基本上可以x
从(更高分辨率)mipmap level 中获取样本m-i
。
另请注意,明确允许通过 设置或查询 aniso 设置gl[Get]TexParameteri*()
,因此您实际上可以在代码中使用完全基于整数的设置,并假装 float 参数根本不存在。
推荐阅读
- php - 选择查询的分页 - PHP
- jquery - 如何将选择的所有选项设置为“所有”选项选项的值?
- presto - 有没有办法将一列除以列总数?
- machine-learning - Keras:编译模型后更新“可训练”属性
- python - 在使用 Python 的 SQL 查询中使用一系列变量
- json - 从 HackerNewsApi 后端接收的 HTML 标签和特殊字符,在视图中未解码
- javascript - 无法分配给“MyComponent”,因为它不是变量(ReactJS 中的react-dnd 多拖放支持
- excel - vba 有没有办法在其中均匀分配值?
- d3.js - 数据可视化仅适用于条形图中的第一个条形
- apache - RedirectMatch 301 删除 URL 参数