1

我有一个图像图集,其中的元素排列在彼此并排的盒子中。当我定位/缩放这些以使它们逐像素渲染时,一切正常。但是,当我开始进行亚像素定位的那一刻,我可能会从地图集中的相邻图像中流血。

如果我理解正确,这是由片段着色器或纹理位置插值引起的。纹理位置边界附近的像素最终会从相邻像素中获取一些值。

虽然我不确定,因为如果我进行一些搜索,这个问题通常只会出现与在 mip-map 中使用图层有关。我的理解是正确的,还是我做错了什么?我知道如何修复它(对于平铺和非平铺纹理),但我想确保我首先掌握了正确的基础知识。

4

2 回答 2

3

这取决于您使用的渲染引擎和平台。

简单的解决方案是在纹理图集中的每个框之间添加一个 1 像素的透明边框,这应该可以解决大多数情况下的伪影问题。

在普通 OpenGL 中,顶点位置是浮动的,因此很容易实现亚像素精度。当您将精灵放置在非整数边界上时,opengl 实现自然会发生抗锯齿。质量取决于 OpenGL 的实现,您也可以使用 glHint() 来确保安全。

glHint() 文档

于 2012-08-28T07:07:25.140 回答
1

据我所知,是的,当您进行子像素操作时,您会得到像素相互混合,这正是 MSAA 实际用于实现抗锯齿的。

于 2012-08-28T10:15:30.900 回答