サンプルコードから読み解くMetal

metal-sample.png

サンプルコードから読み解く

let renderPassDescriptor = MTLRenderPassDescriptor()
renderPassDescriptor.colorAttachments[0].texture = drawable.texture
renderPassDescriptor.colorAttachments[0].loadAction = .Clear//レンダリングの最初にするサクションでバッファをクリア
renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColor(red: 0.65, green: 0.65, blue: 0.65, alpha: 1.0)
renderPassDescriptor.colorAttachments[0].storeAction = .Store

変数名
texture MTLTexture
loadAction MTLLoadAction レンダリングする時最初に行うアクションを指定する。デフォルトはMTLLoadActionDontCare
clearColor MTLClearColor glClearColorと一緒
storeAction MTLStoreAction レンダリングの最後にするアクションを指定する。デフォルトはMTLStoreActionDontCare

+ resize

func resize() {
        if (view.window == nil) {
            return
        }
 
        let window = view.window!
        let nativeScale = window.screen.nativeScale
        view.contentScaleFactor = nativeScale
        metalLayer.frame = view.layer.frame
 
        var drawableSize = view.bounds.size//iPhone6だと(320,568)
 
        drawableSize.width = drawableSize.width * CGFloat(view.contentScaleFactor)
        drawableSize.height = drawableSize.height * CGFloat(view.contentScaleFactor)
        //view.contentScaleFactorはiPhone6だと2.34375
        metalLayer.drawableSize = drawableSize//iPhone6だと(750,1331) こっちがピクセル数
  }

サポートサイト Wikidot.com