---
title: About Metal and This Guide
framework: miscellaneous
role: article
path: apple-archive/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Introduction
---

# About Metal and This Guide

Describes how to use the Metal framework to implement low-overhead graphics rendering or parallel computational tasks.

## At a Glance

This document describes the fundamental concepts of Metal: the command submission model, the memory management model, and the use of independently compiled code for graphics shader and data-parallel computation functions. The document then details how to use the Metal API to write an app.

You can find more details in the following chapters:

- [Fundamental Metal Concepts](../Device/Device.html#//apple_ref/doc/uid/TP40014221-CH2-SW1) briefly describes the main features of Metal. - [Command Organization and Execution Model](../Cmd-Submiss/Cmd-Submiss.html#//apple_ref/doc/uid/TP40014221-CH3-SW1) explains how to create and submit commands to the GPU for execution. - [Resource Objects: Buffers and Textures](../Mem-Obj/Mem-Obj.html#//apple_ref/doc/uid/TP40014221-CH4-SW1) discusses the management of device memory, including buffer and texture objects that represent GPU memory allocations. - [Functions and Libraries](../Prog-Func/Prog-Func.html#//apple_ref/doc/uid/TP40014221-CH5-SW1) describes how Metal shading language code can be represented in a Metal app, and how Metal shading language code is loaded onto and executed by the GPU. - [Graphics Rendering: Render Command Encoder](../Render-Ctx/Render-Ctx.html#//apple_ref/doc/uid/TP40014221-CH7-SW1) describes how to render 3D graphics, including how to distribute graphics operations across multiple threads. - [Data-Parallel Compute Processing: Compute Command Encoder](../Compute-Ctx/Compute-Ctx.html#//apple_ref/doc/uid/TP40014221-CH6-SW1) explains how to perform data-parallel processing. - [Buffer and Texture Operations: Blit Command Encoder](../Blit-Ctx/Blit-Ctx.html#//apple_ref/doc/uid/TP40014221-CH9-SW3) describes how to copy data between textures and buffers. - [Metal Tools](../Dev-Technique/Dev-Technique.html#//apple_ref/doc/uid/TP40014221-CH8-SW1) lists the tools available to help you customize and improve your development workflow. - [Metal Feature Set Tables](../MetalFeatureSetTables/MetalFeatureSetTables.html#//apple_ref/doc/uid/TP40014221-CH13-SW1) lists the feature availability, implementation limits, and pixel format capabilities of each Metal feature set. - [What's New in iOS 9 and OS X 10.11](../WhatsNewiniOS9andOSX1011/WhatsNewiniOS9andOSX1011.html#//apple_ref/doc/uid/TP40014221-CH12-SW11) summarizes the new features introduced in iOS 9 and OS X 10.11. - [What’s New in iOS 10, tvOS 10, and OS X 10.12](../WhatsNewiniOS10tvOS10andOSX1012/WhatsNewiniOS10tvOS10andOSX1012.html#//apple_ref/doc/uid/TP40014221-CH14-SW1) summarizes the new features introduced in iOS 10, tvOS 10, and OS X 10.12. - [Tessellation](../Tessellation/Tessellation.html#//apple_ref/doc/uid/TP40014221-CH15-SW1) describes the Metal tessellation pipeline used to tessellate a patch, including the use of a compute kernel, tessellator, and post-tessellation vertex function. - [Resource Heaps](../ResourceHeaps/ResourceHeaps.html#//apple_ref/doc/uid/TP40014221-CH16-SW1) describes how to sub-allocate resources from a heap, alias between them, and track them with a fence.

## Prerequisites

You should be familiar with the Objective-C language and experienced in programming with OpenGL, OpenCL, or similar APIs.

## See Also

The *[Metal Framework Reference](https://developer.apple.com/documentation/metal)* is a collection of documents that describes the interfaces in the Metal framework.

The [Metal Shading Language Specification](https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf) is a document that specifies the Metal shading language, which is used to write a graphics shader or a compute function that is used by a Metal app.

In addition, several sample code projects using Metal are available in the Apple Developer Library.

[Next](../Device/Device.html)

Copyright © 2016 Apple Inc. All Rights Reserved. [Terms of Use](http://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](http://www.apple.com/privacy/) | Updated: 2016-12-12
