Opengl es 相邻单元的纹理瓷砖出血(图像图集)

Opengl es 相邻单元的纹理瓷砖出血(图像图集),opengl-es,opengl-es-2.0,Opengl Es,Opengl Es 2.0,我有一个图像地图集,里面的元素排列在盒子里,互相挨着。当我对它们进行定位/缩放,使它们逐像素渲染时,一切正常。然而,当我开始进行亚像素定位时,我可以从地图集中相邻的图像中获得出血 如果我理解正确,这是由片段着色器,或者更确切地说是纹理位置插值引起的。纹理位置边界附近的像素最终将从相邻像素获得一些值 虽然我不确定,因为如果我做一些搜索,这个问题通常只会出现在使用mip贴图中的图层时。我的理解是正确的,还是我做错了什么?我知道如何修复它(对于平铺纹理和不平铺纹理),但我想首先确保基本知识正确无误。这

我有一个图像地图集,里面的元素排列在盒子里,互相挨着。当我对它们进行定位/缩放,使它们逐像素渲染时,一切正常。然而,当我开始进行亚像素定位时,我可以从地图集中相邻的图像中获得出血

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


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

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

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

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


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

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

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


据我所知,是的,当你进行亚像素处理时,你会得到像素相互混合,这是MSAA实现抗锯齿的实际功能。

据我所知,是的,当您进行亚像素处理时,您将得到像素彼此混合,这是MSAA实现抗锯齿的实际操作