graphics - 为什么我们需要纹理过滤(双线性、三线性、各向异性......)

标签 graphics 3d textures texture-mapping

也许我对纹理映射如何实现的理解是错误的。我最近纯粹用 Java 构建了一个 3D 引擎(我知道我手头有很多时间),并且完成了纹理映射部分。我这样做的方式是,当我将像素绘制到屏幕上时,我会查找该位置处纹理的颜色。我知道纹理过滤有助于减少以更倾斜的角度观看的远距离纹理的模糊度。但为什么这个问题首先会出现呢?我的实现中没有。为什么缩小图像时分辨率会降低?

这是我的发动机的图像。 enter image description here

最佳答案

两个词:奈奎斯特定理。

你的纹理是一个信号,屏幕像素是采样位置(因此术语采样器是指将纹理采样到屏幕像素的单元)。奈奎斯特定理指出,要忠实地用样本表示信号,信号不得包含高于平均采样频率一半的频率。如果不满足该约束,就会发生混叠。因此,当您缩小纹理时,实际上是对其进行二次采样,如果纹理信号中的采样距离变得大于最高解析纹理特征之间距离的两倍(即采样频率较低),这将导致混叠。

因此,在每个离散采样系统中,采样器之前都会安装一个所谓的“抗混叠滤波器”。

关于graphics - 为什么我们需要纹理过滤(双线性、三线性、各向异性......),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335662/

相关文章:

iphone - iOS 背景和图像似乎无法正确缩放以适应视网膜显示

当有多个时,删除 ggplot2 中的额外图例

java - 什么是 sun.awt.image.BufImgSurfaceData?

OpenGL透视投影像素完美绘图

python - 使用欧拉角/矩阵在 3d 空间中旋转?

ubuntu - 超过 128MB 的纹理时出现 OpenGL "out of memory"错误

android - 位图像素值在同一像素上的 setPixel() 和 getPixel() 之后不同

r - ggplot2,顶部和边缘的图例

r - R中的PCA多图

javascript - 如何将 Sprite 纹理应用于 matter.js 主体