“metal::texturecube”中没有名为“read”的成员

Posted

技术标签:

【中文标题】“metal::texturecube”中没有名为“read”的成员【英文标题】:No member named 'read' in 'metal::texturecube' 【发布时间】:2017-06-18 10:59:07 【问题描述】:

根据Apple's Metal shading language specification,纹理立方体有读取方法,

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);

错误是,

No member named 'read' in 'metal::texturecube<float, metal::access::read>'

如果我删除访问限定符,那么我得到,

No member named 'read' in 'metal::texturecube<float, metal::access::sample>'

我也尝试将类型从 float 更改为 int 或 short,但我得到了同样的错误。令人沮丧的是没有标题可看...

有什么想法吗?

【问题讨论】:

【参考方案1】:

texturecube::read() 似乎仅适用于 macOS。

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

在 metal_texture 标头中,您会看到 read() 的声明位于预处理器条件 (#if) 内,并且仅在定义了宏 __HAVE_TEXTURE_CUBE_READ__ 时才声明。在 macOS 上,这是在 metal_config 标头中定义的。在 ios 上,它没有定义。

【讨论】:

以上是关于“metal::texturecube”中没有名为“read”的成员的主要内容,如果未能解决你的问题,请参考以下文章

我的 Discord Bot 中“没有名为 'dotenv' 的模块”

.spec 文件中的“ModuleNotFoundError:没有名为 'kivymd' 的模块”

如何解决google colab中“没有名为'tools'的模块”?

Colab 中没有名为“statsmodels.tsa.arima”的模块,但 Pycharm 中没有

Pycharm 中没有名为“pandas”的模块

ModuleNotFoundError:没有名为“knox”的模块