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

问题描述 投票:0回答:2

我在 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
之外,我还需要做些什么才能使线性过滤工作吗?

ios metal
2个回答
8
投票

我的设备 (iPad Pro) 上的

MTLPixelFormatRGBA32Float
类型的纹理似乎不支持线性过滤。当我更改为
MTLPixelFormatRGBA8Unorm
时,过滤按预期工作。


0
投票

我可以知道这些图片的标题吗?

© www.soinside.com 2019 - 2024. All rights reserved.