譯者注:這篇文章只是對接下來知識的概括和梳理动漾,并沒有實際講解技術(shù),故算作第0課荠锭,不納入課程序號谦炬。實際上蘋果官方也沒有第幾課這種說法,只是譯者方便大家按順序閱讀而設(shè)节沦,不必過于糾結(jié)键思。可以將本文當成Metal學習的目錄甫贯。
查看原文
關(guān)于Metal和本教程
Metal框架支持GPU加速的3D圖像渲染以及數(shù)據(jù)并行計算工作吼鳞。Metal為細粒度的、架構(gòu)上需要操縱低層級的叫搁、提交和處理圖像赔桌、運算指令等提供了現(xiàn)代化流水線型的API,同時還有對這些指令涉及到的數(shù)據(jù)及資源的管理工作渴逻。Metal的一個主要目的就是降低執(zhí)行GPU運算帶來的CPU負擔疾党。
驚鴻一瞥
本文檔討論Metal中的一些基本概念:命令提交模型、內(nèi)存管理模型以及關(guān)于圖像著色器和并行數(shù)據(jù)計算函數(shù)的獨立編譯代碼的使用惨奕。之后本文檔會詳細介紹如何使用Metal的API來開發(fā)app雪位。
你可以在下邊的章節(jié)中詳細學習如下知識:
- Metal中的基本概念(譯文)簡單地介紹了Metal的主要功能。
- 命令的組織及執(zhí)行模型介紹了如何創(chuàng)建并提交命令給GPU梨撞,從而使之執(zhí)行雹洗。
- 資源對象:緩沖和紋理討論了設(shè)備內(nèi)存的管理,包含的緩沖及紋理對象這些由GPU分配使用顯存的對象卧波。
-
庫函數(shù)
描述了如何在使用了Metal的應用里使用Metal著色器語言(shading language)时肿,以及Metal著色器語言代碼是怎么由GPU加載并執(zhí)行的。 - 圖像渲染:渲染指令編碼器描述了如何渲染3D圖像港粱,包括如何在多線程下分發(fā)繪圖操作螃成。
- 并行數(shù)據(jù)計算處理:運算指令編碼器介紹了如何實現(xiàn)并行數(shù)據(jù)處理。
- 緩沖和紋理操作:位塊傳送命令編碼器描述了如何在紋理和緩沖區(qū)之間拷貝數(shù)據(jù)。
- Metal工具列出了可以幫你定制或改進開發(fā)工作流的一些工具寸宏。
- Metal功能設(shè)定表列出了Metal中每一項功能的可用性宁炫、使用時的限制和支持的像素格式。
- iOS 9和OS X 10.11中的新功能總結(jié)了在iOS 9和OS X 10.11中添加的新功能击吱。
- iOS 10淋淀、tvOS 10和OS X 10.12中的新功能總結(jié)了在iOS 10遥昧、tvOS 10和OS X 10.12中添加的新功能覆醇。
- 鑲嵌(tessellation)描述了Metal用來鑲嵌圖塊的鑲嵌管線的相關(guān)內(nèi)容,包括使用計算內(nèi)核炭臭、鑲嵌器或后鑲嵌(post-tessellation)頂點函數(shù)永脓。
- 資源堆描述了如何在內(nèi)存堆中子分配(sub-allocate)資源、創(chuàng)建別名并使用柵欄來追蹤它們鞋仍。
先決條件
你應該熟悉Objective-C語言常摧,并且具有OpenGL、OpenCL或類似API的編程經(jīng)驗威创。
參考
Metal框架參考資料是一系列講解Metal框架接口的文檔落午。
Metal著色器語言指南講解了Metal著色器語言皮官,它在使用了Metal的應用中被用來創(chuàng)建圖像著色器或運算函數(shù)最仑。
此外妄呕,在蘋果開發(fā)者庫中有一些使用了Metal的示例代碼匠童。