我正在尝试将我的 openGL 着色器转换为金属着色器,以将 yuv10 位纹理转换为 rgba 纹理。
使用openGL,我正在使用此链接中的GLSL代码
我进行了转换,但结果不是我预期的。
我想这是因为我使用
tex2d.sample(sampler2d, x, y).rgba;
而不是
texelFetch(tex, ivec2(sourceColumnIndexY, texcoordDenorm.y)
有没有等同于金属中的纹素提取?
你并没有真正解释"结果不是我期望的结果"。你也没有解释你对输入纹理使用的金属像素格式之类的事情。
无论如何,对应于texelFetch()
的 Metal 函数只是纹理类型的read()
成员函数。例如,texture2d<T>
具有以下两个成员函数:
Tv read(uint2 coord, uint lod = 0) const
Tv read(ushort2 coord, ushort lod = 0) const
其中Tv
是分量类型为 T
的 4 分量向量。