ios 金属:线性纹理过滤不按预期工作

mbzjlibv  于 12个月前  发布在  iOS
关注(0)|答案(1)|浏览(85)

我在iOS上使用Metal,使用以下片段着色器:

constexpr sampler s(coord::normalized,
                    address::clamp_to_zero,
                    filter::linear);

fragment half4 passThroughFragment(VertexInOut inFrag [[stage_in]],
                                   texture2d<float> tex [[ texture(0) ]])
{
    return half4(tex.sample(s, inFrag.uv));
}

我的纹理是4x4图像。尽管过滤设置为线性,我还是得到了下面的图像,使用最近邻过滤:

看起来我的uv很好,因为当我修改片段着色器时如下:

return half4(0, inFrag.uv.x, inFrag.uv.y, 1);

我得到了预期的图像:

除了指定filter::linear之外,我还需要做什么来使线性过滤工作吗?

r7s23pms

r7s23pms1#

在我的设备(iPad Pro)上,MTLPixelFormatRGBA32Float类型的纹理似乎不支持线性过滤。当我更改为MTLPixelFormatRGBA8Unorm时,过滤工作正常。

相关问题