Framework
Metal
使用圖形處理器渲染高級3D圖形並執行數據並行計算。
SDKs
iOS 8.0+
-
macOS 10.11+
tvOS 9.0+
On This PageOverviewTopicsSee Also
Overview
圖形處理器(GPU)旨在快速渲染圖形並執行數據並行計算。需要直接與設備上可用的GPU通信時,請使用Metal框架。渲染複雜場景或執行高級科學計算的應用程序可以使用此功能來實現最佳性能。此類應用包括:
渲染複雜3D環境的遊戲
視頻處理應用,如Final Cut Pro
數據處理應用程序,例如用於執行科學研究的應用程序
Metal與其他框架密切配合,以補充其功能。使用MetalKit簡化在屏幕上獲取Metal內容的任務。使用“ 金屬性能着色器”實現自定義渲染功能或利用大型現有功能庫。
許多高級Apple框架都是基於Metal構建的,以利用其性能,包括Core Image,SpriteKit和SceneKit。使用其中一個高級框架可以保護您免受GPU編程的細節影響,但編寫自定義Metal代碼可以使您獲得最高級別的性能。
Topics
GPU Devices
在運行時訪問GPU設備,這是Metal開發的基礎。
選擇運行Metal代碼的系統默認GPU設備。
protocol MTLDevice
用於繪製圖形或進行並行計算的GPU的金屬接口。
通過考慮GPU功能,電源或性能特徵,選擇一個或多個運行Metal代碼的GPU。
Command Setup
設置基礎架構以在GPU上執行自定義代碼。
Setting Up a Command Structure
設置命令結構
瞭解Metal如何在GPU上執行命令。
Devices and Commands
設備和命令
演示如何訪問GPU並與之交互。
Labeling Metal Objects and Commands
標記金屬對象和命令
爲Metal對象和命令分配有意義的標籤,以便您可以在捕獲的幀的調用列表中輕鬆識別它們。
protocol MTLCommandQueue
protocol MTLCommandQueue
組織命令緩衝區以由GPU執行的隊列。
protocol MTLCommandBuffer
protocol MTLCommandEncoder
存儲編碼命令以供GPU執行的容器。
protocol MTLCommandEncoder
protocol MTLCommandEncoder
存儲編碼命令以供GPU執行的容器。
Advanced Command Setup
高級命令設置
組織命令以獲得最大的併發性和最小的依賴性。
Graphics
通過發出繪製調用來渲染圖形,並在繪製到屏幕時選擇演示文稿對象。
Hello Triangle
你好三角形
演示如何渲染簡單的2D三角形。
Basic Buffers
基本緩衝區
演示如何使用頂點緩衝區管理數百個頂點。
Basic Texturing
基本紋理
演示如何加載圖像數據和紋理四邊形。
protocol MTLRenderCommandEncoder
protocol MTLRenderCommandEncoder
用於編碼渲染過程的命令的對象。
protocol MTLParallelRenderCommandEncoder
protocol MTLParallelRenderCommandEncoder
分割單個渲染過程的對象,以便可以從多個線程同時進行編碼。
Render Pass
渲染通行證
用於更新一組渲染目標的命令集合。
Render Pipeline
渲染管道
應該如何呈現圖形基元的規範。
Vertex Data
頂點數據
指定與圖形處理相關聯的紋理內的精確位置的點。
Presentation Objects
演示對象
用於在屏幕上顯示金屬內容的各種用戶界面元素。
Parallel Computation
在GPU上並行處理任意計算。
Hello Compute
你好計算
演示如何使用GPU執行數據並行計算。
About Threads and Threadgroups
關於線程和線程組
瞭解Metal如何組織計算處理工作負載。
Calculating Threadgroup and Grid Sizes
計算線程組和網格大小
在分派計算處理工作負載時,計算線程組和網格的最佳大小。
class MTLComputePipelineDescriptor
class MTLComputePipelineDescriptor
用於自定義編譯新計算管道狀態對象的方式的對象。
protocol MTLComputePipelineState
protocol MTLComputePipelineState
包含已編譯計算管道的對象。
protocol MTLComputeCommandEncoder
protocol MTLComputeCommandEncoder
用於在計算傳遞中編碼命令的對象。
Shaders
用 Metal Shading Language.編寫GPU代碼。
Shader Authoring着色器創作
用 Metal Shading Language.編寫GPU代碼。
Libraries圖書館
將着色器組織到庫中。
Functions功能
檢索有關渲染和計算功能的信息。
Resources
創建對象以保存GPU數據。
設置存儲模式,以定義資源的內存位置和訪問權限。
protocol MTLResource
protocol MTLResource
GPU可訪問的內存分配。
protocol MTLBlitCommandEncoder
protocol MTLBlitCommandEncoder
編碼器,用於編碼內存複製,過濾和填充命令。
Buffers
緩衝區
創建和操作非結構化GPU資源。
Textures
紋理
創建和操作結構化GPU資源。
Heaps
堆
創建單個內存分配,您可以從中分配資源。.
Synchronization
同步
管理對應用中資源的訪問,以避免數據危害。
Tools
Tools, Profiling, and Debugging工具,分析和調試
在命令行構建Metal函數庫,或使用Xcode調試問題,並提高性能。
Reducing the Memory Footprint of Metal Apps減少金屬應用的內存佔用量
瞭解在iOS和tvOS中有效使用內存的最佳實踐。
Cookbook
查看圖形技術的集合並試驗其伴隨示例代碼。
Deferred Lighting
延期照明
演示如何實現利用獨特Metal功能的延遲照明渲染器。
Reflections with Layer Selection
層選擇的反射
演示如何使用圖層選擇來減少反射對象所需的渲染過程的數量。
LOD with Function Specialization
具有功能專業化的LOD
演示如何使用專用函數根據動態條件選擇細節級別。
Dynamic Terrain with Argument Buffers
具有參數緩衝區的動態地形
演示如何使用參數緩衝區通過GPU驅動的管道實時渲染動態地形。
Interoperability
Mixing Metal and OpenGL Rendering in a View
在視圖中混合金屬和Open GL渲染
使用可互操作的紋理在同一視圖中使用Metal和OpenGL繪製。
Basic Geometric Types
用於定義大小,位置和區域的結構。
struct MTLOrigin
struct MTLOrigin
圖像或紋理中像素相對於左上角的位置,其座標爲(0,0)。
struct MTLRegion
struct MTLRegion
圖像或紋理中的矩形像素塊,由其左上角和大小定義。
struct MTLSize
struct MTLSize
一組聲明對象大小的維度,例如圖像,紋理,線程組或網格。
func MTLOriginMake(Int, Int, Int) -> MTLOrigin
func MTLOriginMake(Int, Int, Int) -> MTLOrigin
返回圖像或紋理中像素的位置。
func MTLRegionMake1D(Int, Int) -> MTLRegion
func MTLRegionMake1D(Int, Int) -> MTLRegion
返回圖像或紋理數據的1D區域。
func MTLRegionMake2D(Int, Int, Int, Int) -> MTLRegion
func MTLRegionMake2D(Int, Int, Int, Int) -> MTLRegion
返回圖像或紋理數據的2D矩形區域。
func MTLRegionMake3D(Int, Int, Int, Int, Int, Int) -> MTLRegion
func MTLRegionMake3D(Int, Int, Int, Int, Int, Int) -> MTLRegion
返回圖像或紋理數據的3D立方體區域。
func MTLSizeMake(Int, Int, Int) -> MTLSize
func MTLSizeMake(Int, Int, Int) -> MTLSize
返回對象的指定大小,例如紋理或線程組。
See Also
Related Documentation
Metal Shading Language Guide金屬着色語言指南
Metal Feature Sets 金屬特徵集
MetalKit
金屬套件
使用更少的代碼,可以更快,更輕鬆地構建Metal應用程序。在標準金屬視圖中渲染圖形,從許多來源加載紋理,並使用模型I / O提供的模型高效工作。
Metal Performance Shaders
金屬性能着色器
利用針對每個Metal GPU系列的獨特特性進行微調的內核優化圖形和計算性能。