【发布时间】:2016-09-17 01:38:04
【问题描述】:
也许我对如何实现纹理映射的理解是错误的。我最近完全用 Java 构建了一个 3D 引擎(我知道我手头有很多时间)并且我完成了纹理映射部分。我这样做的方式是,当我将像素绘制到屏幕上时,我会在该位置查找纹理的颜色。我知道纹理过滤有助于减少以更倾斜的角度观看的远距离纹理的模糊度。但是为什么这个问题甚至会首先出现呢?它没有在我的实现中。为什么缩小图像时会丢失分辨率?
这是我的引擎的图像。
【问题讨论】:
-
我认为过滤解决的实际问题不是模糊,而是你在飞机远端得到的过度锐化的外观。 Bad 过滤使它看起来很模糊。见:oi62.tinypic.com/zmds7n.jpg
-
另外,想想为什么图像编辑程序在缩小图像时会执行过滤。您正在失去分辨率,因为可用于表示同一图像的像素较少。所以你做了一些过滤,试图让这些像素代表一个以上的源像素。
-
好吧,当我缩小图像时,我的像素比我需要绘制的像素多得多。我所要做的就是选择我要绘制的像素。这不会导致图像模糊。但是,当我拉伸图像时,我没有足够的像素来覆盖更大的画布,我必须开始插入中间像素,这会导致图像模糊。
-
当您必须选择要绘制的像素时,您会遗漏信息。它不会产生模糊的图像,但通常会产生锯齿状的图像。看看这个:你能看出用“最近邻”(你的算法)和 Paint.Net 的“最佳”算法缩小图像之间的区别吗? i.imgur.com/7csNSaA.png
-
这是有道理的,但大多数在线消息来源都说没有 AF 会导致纹理被拉伸和模糊。
标签: graphics 3d textures texture-mapping