代码之家  ›  专栏  ›  技术社区  ›  vtruant

yuv10位金属纹理

  •  -1
  • vtruant  · 技术社区  · 7 年前

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

    from this link

    我做了转换,但结果不是我预期的。

    我想是因为我用

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

    而不是

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

    在金属中有没有与texelFetch等效的?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ken Thomases    7 年前

    你没有真正解释“结果不是我所期望的”。你也没有解释你在输入纹理中使用的金属像素格式。

    无论如何,对应于 texelFetch() 只是 read() 纹理类型的成员函数。例如 texture2d<T> 具有以下两个成员功能:

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

    哪里 Tv 是分量类型为的4分量向量 T .