2017-06-18 3 views
2

Apple's Metal shading language specificationによると、テクスチャキューブはreadメソッドを持って、という名前のメンバーに「読み取り」「金属:: texturecube」

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型に変更しようとしましたが、同じエラーが発生します。恥ずかしがり屋を見ることができないと悔しい...

アイデア?

答えて

2

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では定義されていません。

関連する問題