Kim*_*imi 3 opengl textures texture-mapping opengl-es-2.0
我想知道一个理论推理为什么这甚至可能:几何的转换如何与纹理映射相关.
GL_CLAMP_TO_EDGE,GL_NEAREST,片段着色器是highp.我试过的事情:
按子像素量移动将始终改变纹理采样.您使用最近采样会影响纹理的采样方式,但不会影响采样的坐标.该坐标是tex-coords,在多边形上插值和顶点的函数,它们确定多边形如何光栅化以屏幕像素.
请记住,为了获得完美的纹理采样,在像素中心进行评估时,插值的tex-coords必须完全位于纹素中心上.
将多边形移动一小部分像素会改变纹理的采样位置,因为像素中心现在位于多边形内略微不同的点.
现在,通过最近的采样,生成的坐标将有效地舍入到最近的纹素,因此如果您的坐标离中心不远,那么它可能会起作用.然而,当你的坐标移动了大约半个纹素时,它们就位于两个纹素几乎等距的点上,那么它只需要在计算精度上的微小误差就可以单向推动一些像素,而另一些像素也可以.
这是一张图.我选择显示一个三角形,用检查图案映射,但它同样适用于精灵或其他任何东西.
在图的顶部,我只是展示三角形如何映射到纹理.如果您在一个非常高分辨率的屏幕(或非常大的尺寸)上渲染此三角形,您可能会看到完全复制的检查模式.
但是,如果您以更接近的比例(例如1:1)进行映射,则采样非常重要.在图的底部,我展示了这种情况.
要注意的关键是屏幕像素中心的位置,因为它决定了绘制哪些像素,以及纹理的采样位置.在这种情况下,我已经显示多边形被精确地映射到正确的大小,但偏移了半个像素.这使得像素中心在相邻纹素之间精确对齐,并且采样将非常抽搐.
