Ios 没有名为'的成员;阅读';在';金属:TestrucleCuBe';

Ios 没有名为'的成员;阅读';在';金属:TestrucleCuBe';,ios,fragment-shader,metal,Ios,Fragment Shader,Metal,根据,纹理立方体具有读取方法 read(uint2 coord, uint face, uint lod = 0) const 但是,当我尝试构建此着色器时,会出现编译器错误 fragment half4 passFragment(VertexInOut inFrag [[stage_in]], texturecube<float, access::read> tex [[ texture(0) ]]) { float

根据,纹理立方体具有读取方法

read(uint2 coord, uint face, uint lod = 0) const
但是,当我尝试构建此着色器时,会出现编译器错误

fragment half4 passFragment(VertexInOut inFrag [[stage_in]],
                            texturecube<float, access::read> tex [[ texture(0) ]])
{
    float4 out = tex.read(uint2(0,0), uint(0));
    return half4(out);
}
fragment half4 passFragment(VertexInOut inFrag[[stage_in]],
texturecube-tex[[纹理(0)])
{
float4 out=tex.read(uint2(0,0),uint(0));
返回half4(out);
}
错误是

No member named 'read' in 'metal::texturecube<float, metal::access::read>'
在'metal::texturecube'中没有名为'read'的成员
如果我删除了访问限定符,那么

No member named 'read' in 'metal::texturecube<float, metal::access::sample>'
在'metal::texturecube'中没有名为'read'的成员
我还尝试将类型从float更改为int或short,但我得到了相同的错误。令人沮丧的是没有标题可以看


有什么想法吗?

看来
texturecube::read()
仅在macOS上可用

事实上,有可用的标题。查看/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/usr/lib/clang/3.5/include/metal

在metal_texture标头中,您将看到
read()
的声明位于预处理器条件(
\if
)的内部,并且仅在定义了宏
\uuuu HAVE\u texture\u CUBE\uu read\uu
时才声明。在macOS上,这在metal_config头中定义。在iOS上,它没有定义