---
title: Compositor Services
framework: Compositor Services
role: collection
role_heading: Framework
platforms: [visionOS 1.0+]
path: compositorservices
---

# Compositor Services

Take control of the drawing environment and render your own content using Metal.

## Overview

Overview Compositor Services lets you draw directly to the device’s displays using Metal and your own rendering engine. Use this framework to create a fully immersive scene in your app that doesn’t require integration with the person’s surroundings. When you present an immersive space with CompositorLayer content from your app, you receive a LayerRenderer with the information you need to set up your Metal drawing environment. Use the layer to start your rendering loop and deliver successive frames of content. The layer provides the timing information you need to deliver frames at the refresh rate of the display. It also provides the Metal textures and other information that you need to draw content on the device displays. For more information about how to draw your app’s content using Metal, see Metal.

## Topics

### App integration

- [Drawing fully immersive content using Metal](compositorservices/drawing-fully-immersive-content-using-metal.md)
- [Interacting with virtual content blended with passthrough](compositorservices/interacting-with-virtual-content-blended-with-passthrough.md)
- [Rendering hover effects in Metal immersive apps](compositorservices/rendering_hover_effects_in_metal_immersive_apps.md)
- [CompositorLayer](compositorservices/compositorlayer.md)
- [CompositorLayerConfiguration](compositorservices/compositorlayerconfiguration.md)
- [DefaultCompositorLayerConfiguration](compositorservices/defaultcompositorlayerconfiguration.md)

### Render-loop setup

- [LayerRenderer](compositorservices/layerrenderer.md)
- [LayerRenderer.Frame](compositorservices/layerrenderer/frame.md)

### Drawing environment

- [LayerRenderer.Drawable](compositorservices/layerrenderer/drawable.md)
- [LayerRenderer.Drawable.View](compositorservices/layerrenderer/drawable/view.md)

### Errors

- [LayerRendererConfigurationError](compositorservices/layerrendererconfigurationerror.md)

### Articles

- [Controlling Metal rendering immersion level](compositorservices/controlling-metal-rendering-immersion-level.md)

### Structures

- [TextureTopology](compositorservices/texturetopology.md)

### Variables

- [CP_ARKIT_AVAILABLE](compositorservices/cp_arkit_available.md)

### Type Aliases

- [cp_drawable_array_t](compositorservices/cp_drawable_array_t.md)
- [cp_hover_effect_t](compositorservices/cp_hover_effect_t.md)
