2017-12-05 29 views
0

私はアルファチャンネルで透明な色を返すMetalフラグメントシェーダーを持っています.MTKViewの下にUIViewを表示したいのですが、背景色は黒で「エラーノイズ」です。アルファ/透明度&MTKView?

MTLRenderPipelineDescriptor:

pipelineStateDescriptor.isAlphaToCoverageEnabled = true 
pipelineStateDescriptor.colorAttachments[0].pixelFormat = .bgra8Unorm 
pipelineStateDescriptor.colorAttachments[0].isBlendingEnabled = true 
pipelineStateDescriptor.colorAttachments[0].destinationRGBBlendFactor = .oneMinusSourceAlpha 
pipelineStateDescriptor.colorAttachments[0].destinationAlphaBlendFactor = .oneMinusSourceAlpha 

MTLRenderPassDescriptor:私は明確な色を変更すると、私は明確な色をスキップする場合、私は、「エラー音」を参照してくださいカントー

renderPassDescriptor.colorAttachments[0].loadAction = .clear 
renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColor(red: 0, green: 0, blue: 0, alpha: 0) 

は、私は、透明色の下でそれを見ることができます。クリアカラーのアルファチャンネルは実際に何かをしますか?

誰かがMTKViewを透明にする方法を知っていますか?

更新:

はここMTKViewを透明にする魔法の財産です:

self.isOpaque = false 
+0

falseを返すために 'opaque'プロパティをオーバーライドする' MTKView'のサブクラスを使用していますか? –

+0

isOpaqueプロパティがそれを行いました!ありがとう – Hexagons

答えて

1

UIViewは、透明なコンテンツを持っているか、そうでない場合は、不透明な図面で自身を埋めるために失敗する可能性がある場合、それは設定する必要がありますそのopaqueisOpaque)プロパティはfalseになり、その背後にあるものと正しく合成されます。 MTKViewUIViewのサブクラスなので、これも同様です。

関連する問題