MTLDevice?
獲取設(shè)備的GPU
MTLLibrary?
Metal函數(shù)庫(kù)淆衷,可以通過(guò)makeDefaultLibrary和makeLibrary(filePath:)創(chuàng)建
makeDefaultLibrary 用于獲取當(dāng)前主bundle Library
makeLibrary(filePath:) 用于獲取其他bundle下的Library
MTLFunction
創(chuàng)建一個(gè)Metal函數(shù)茅逮,函數(shù)定義在.metal文件內(nèi),取函數(shù)的函數(shù)名(不帶參數(shù)名)
MTLCommandQueue
提交Metal渲染命令隊(duì)列
MTLComputePipelineState ||?MTLRenderPipelineState
創(chuàng)建管線(xiàn)攀涵,作用是把MTLFunction關(guān)聯(lián)到Pipeline上牡属,最終繪制的時(shí)候會(huì)根據(jù)pipeline的繪制方式和函數(shù)進(jìn)行繪制
大致流程
獲取到Device和Library渊涝、commandQueue之后,通過(guò)MTLFunction創(chuàng)建pipeline
生成commandBuffer
創(chuàng)建encode(可以為多個(gè))抛计,encode內(nèi)綁定數(shù)據(jù)和pipeline哄孤,設(shè)置執(zhí)行方式和執(zhí)行次數(shù)后使用endEncoding結(jié)束單次encode
最終將command Buffer提交上去即可,如果需要等待結(jié)果吹截,可以使用commandBuffer.waitUntilCompleted()