# Distortion Renderer

# Distortion Renderer

This module renders the eyes textures into the display.

## Summary

Important: This module functions must be called from the render thread.

| ### Functions ||
|---|---|
| `https://developers.google.com/cardboard/reference/c/group/distortion-renderer#group__distortion-renderer_1gae380e08780f586bc0c730dd74ec0f20b(https://developers.google.com/cardboard/reference/c/group/types#group__types_1ga5bb7a871f5b615e560d7a094752f98c8 *renderer)` | `void` Destroys and releases memory used by the provided distortion renderer object. |
| `https://developers.google.com/cardboard/reference/c/group/distortion-renderer#group__distortion-renderer_1gab5fbf6c9f3dbe5029d228fa2cc68aa80(https://developers.google.com/cardboard/reference/c/group/types#group__types_1ga5bb7a871f5b615e560d7a094752f98c8 *renderer, uint64_t target, int x, int y, int width, int height, const https://developers.google.com/cardboard/reference/c/struct/cardboard-eye-texture-description#struct_cardboard_eye_texture_description *left_eye, const https://developers.google.com/cardboard/reference/c/struct/cardboard-eye-texture-description#struct_cardboard_eye_texture_description *right_eye)` | `void` Renders eye textures to a rectangle in the display. |
| `https://developers.google.com/cardboard/reference/c/group/distortion-renderer#group__distortion-renderer_1gadeeb330ba6a89dcc86f9aed63630a8b3(https://developers.google.com/cardboard/reference/c/group/types#group__types_1ga5bb7a871f5b615e560d7a094752f98c8 *renderer, const https://developers.google.com/cardboard/reference/c/struct/cardboard-mesh#struct_cardboard_mesh *mesh, https://developers.google.com/cardboard/reference/c/group/types#group__types_1gaf7cdc554e461d1ea3f236eefc6a3a59e eye)` | `void` Sets the distortion Mesh for a particular eye. |
| `https://developers.google.com/cardboard/reference/c/group/distortion-renderer#group__distortion-renderer_1ga4c82c2750d8ef15ed505f4d9c53a6203(const https://developers.google.com/cardboard/reference/c/struct/cardboard-metal-distortion-renderer-config#struct_cardboard_metal_distortion_renderer_config *config)` | `https://developers.google.com/cardboard/reference/c/group/types#group__types_1ga5bb7a871f5b615e560d7a094752f98c8 *` Creates a new distortion renderer object. |
| `https://developers.google.com/cardboard/reference/c/group/distortion-renderer#group__distortion-renderer_1ga95a0537af29dd0d76660fb1de5096464(const https://developers.google.com/cardboard/reference/c/struct/cardboard-open-gl-es-distortion-renderer-config#struct_cardboard_open_gl_es_distortion_renderer_config *config)` | `https://developers.google.com/cardboard/reference/c/group/types#group__types_1ga5bb7a871f5b615e560d7a094752f98c8 *` Creates a new distortion renderer object. |
| `https://developers.google.com/cardboard/reference/c/group/distortion-renderer#group__distortion-renderer_1ga7d4f7bb7cedc0347b9f8f60588ddc097(const https://developers.google.com/cardboard/reference/c/struct/cardboard-open-gl-es-distortion-renderer-config#struct_cardboard_open_gl_es_distortion_renderer_config *config)` | `https://developers.google.com/cardboard/reference/c/group/types#group__types_1ga5bb7a871f5b615e560d7a094752f98c8 *` Creates a new distortion renderer object. |
| `https://developers.google.com/cardboard/reference/c/group/distortion-renderer#group__distortion-renderer_1ga1cb23bee8bce5686404cc5098d0d2326(const https://developers.google.com/cardboard/reference/c/struct/cardboard-vulkan-distortion-renderer-config#struct_cardboard_vulkan_distortion_renderer_config *config)` | `https://developers.google.com/cardboard/reference/c/group/types#group__types_1ga5bb7a871f5b615e560d7a094752f98c8 *` Creates a new distortion renderer object. |

## Functions

### CardboardDistortionRenderer_destroy

```
void CardboardDistortionRenderer_destroy(
  CardboardDistortionRenderer *renderer
)
```
Destroys and releases memory used by the provided distortion renderer object.

Must be called from render thread.

`renderer` Must not be null. When it is unmet, a call to this function results in a no-op.

| Details ||
|---|---|
| Parameters | |---|---| | `renderer` | Distortion renderer object pointer. | |

### CardboardDistortionRenderer_renderEyeToDisplay

```
void CardboardDistortionRenderer_renderEyeToDisplay(
  CardboardDistortionRenderer *renderer,
  uint64_t target,
  int x,
  int y,
  int width,
  int height,
  const CardboardEyeTextureDescription *left_eye,
  const CardboardEyeTextureDescription *right_eye
)
```
Renders eye textures to a rectangle in the display.

Must be called from render thread.

`renderer` Must not be null. `left_eye` Must not be null. `right_eye` Must not be null. `renderer.command_buffer` Must be started. When it is unmet, a call to this function results in a no-op.

- OpenGL ES 2.x or 3.x: `GLuint`.
- Metal: `CardboardMetalDistortionRendererTargetConfig*`.
- Vulkan: `CardboardVulkanDistortionRendererTarget*`. Parameters

  |---|---|
  | `x` | x coordinate of the rectangle's lower left corner in pixels. |
  | `y` | y coordinate of the rectangle's lower left corner in pixels. |
  | `width` | Size in pixels of the rectangle's width. |
  | `height` | Size in pixels of the rectangle's height. |
  | `left_eye` | Left eye texture description. |
  | `right_eye` | Right eye texture description. |

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `renderer` | Distortion renderer object pointer. | | `target` | Target configuration. This parameter is some other type transformed via `reinterpret_cast` to a `uint64_t`. The original type of this parameter depends on the underlying API used as follows: | |

### CardboardDistortionRenderer_setMesh

```
void CardboardDistortionRenderer_setMesh(
  CardboardDistortionRenderer *renderer,
  const CardboardMesh *mesh,
  CardboardEye eye
)
```
Sets the distortion Mesh for a particular eye.

Must be called from render thread.

`renderer` Must not be null. `mesh` Must not be null. When it is unmet, a call to this function results in a no-op.

| Details ||
|---|---|
| Parameters | |---|---| | `renderer` | Distortion renderer object pointer. | | `mesh` | Distortion mesh. | | `eye` | Desired eye. | |

### CardboardMetalDistortionRenderer_create

```
CardboardDistortionRenderer * CardboardMetalDistortionRenderer_create(
  const CardboardMetalDistortionRendererConfig *config
)
```
Creates a new distortion renderer object.

It uses Metal as the rendering API. Must be called from the render thread.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `config` | Distortion renderer configuration. | |
| **Returns** | Distortion renderer object pointer |

### CardboardOpenGlEs2DistortionRenderer_create

```
CardboardDistortionRenderer * CardboardOpenGlEs2DistortionRenderer_create(
  const CardboardOpenGlEsDistortionRendererConfig *config
)
```
Creates a new distortion renderer object.

It uses OpenGL ES 2.0 as the rendering API. Must be called from the render thread.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `config` | Distortion renderer configuration. | |
| **Returns** | Distortion renderer object pointer |

### CardboardOpenGlEs3DistortionRenderer_create

```
CardboardDistortionRenderer * CardboardOpenGlEs3DistortionRenderer_create(
  const CardboardOpenGlEsDistortionRendererConfig *config
)
```
Creates a new distortion renderer object.

It uses OpenGL ES 3.0 as the rendering API. Must be called from the render thread.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `config` | Distortion renderer configuration. | |
| **Returns** | Distortion renderer object pointer |

### CardboardVulkanDistortionRenderer_create

```
CardboardDistortionRenderer * CardboardVulkanDistortionRenderer_create(
  const CardboardVulkanDistortionRendererConfig *config
)
```
Creates a new distortion renderer object.

It uses Vulkan as the rendering API. Must be called from the render thread.

<br />

| Details ||
|---|---|
| Parameters | |---|---| | `config` | Distortion renderer configuration. | |
| **Returns** | Distortion renderer object pointer |