9

私は Metal が初めてで、別の NSView の上に Metal ビューを追加しようとしています。金属ビュー (MTKView) 内で、透明な (透明な) 背景の上に三角形をレンダリングしたいと考えています。ただし、MTKView の背景は常に単色です。これが私が試したことです:

NSView の背景色をクリア カラーに設定しています。

layer?.backgroundColor = NSColor.clearColor().CGColor

このビューが実際に他のビューよりも明確にレンダリングされることを確認しました (drawRect では何もレンダリングされません)。

drawRect で三角形のレンダリングを開始すると、常に単色の背景の上になります。Aではなく、背景色のRGB値を変更できました。常に単色です。

override func drawRect(dirtyRect: NSRect) {
        super.drawRect(dirtyRect)

        ...

        if let rpd = currentRenderPassDescriptor, drawable = currentDrawable {

            rpd.colorAttachments[0].loadAction = .Clear
            rpd.colorAttachments[0].clearColor = MTLClearColorMake(1, 0, 0, 0.5)

            ...

            command_buffer.presentDrawable(drawable)
            command_buffer.commit()
        }
    }

コンテンツをレンダリングする前に、透明な色でテクスチャをクリアする方法について何か提案はありますか?

ありがとうございました。

ここに画像の説明を入力

更新:私は自分の質問に答えたようで、他の人がこれを役に立つと思うように、この投稿を更新しています。

レイヤーを透明に設定するのがコツのようです。

class MetalView: MTKView {
    required init(coder: NSCoder) {
        super.init(coder: coder)

        layer?.opaque = false
    }
}
4

0 に答える 0