金属中的 yuv10 位纹理

yuv10 bits texture in Metal

我正在尝试将我的 openGL 着色器转换为金属着色器,以便将 yuv10 位纹理转换为 rgba 纹理。

对于 openGL,我使用的是这个 GLSL 代码 from this link

我做了转换,但结果不是我想要的。

我想是因为我用了

 tex2d.sample(sampler2d, x, y).rgba;

而不是

texelFetch(tex, ivec2(sourceColumnIndexY, texcoordDenorm.y)

在 Metal 中有没有等同于 texelFetch 的东西?

你并没有真正用什么方式解释"the result is not the one I expected"。您也没有解释输入纹理使用的金属像素格式等内容。

反正texelFetch()对应的Metal函数就是纹理类型的read()成员函数。例如,texture2d<T> 有这两个成员函数:

Tv read(uint2 coord, uint lod = 0) const
Tv read(ushort2 coord, ushort lod = 0) const

其中 Tv 是分量类型为 T 的 4 分量向量。