# Renderer.GlesRenderer

Artifact: [androidx.wear.watchface:watchface](https://developer.android.com/jetpack/androidx/releases/wear-watchface) [View Source](https://cs.android.com/search?q=file:androidx/wear/watchface/Renderer.kt+class:androidx.wear.watchface.Renderer.GlesRenderer) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

*** ** * ** ***


```
public abstract class Renderer.GlesRenderer extends Renderer
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.wear.watchface.Renderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer) ||
|   | ↳ | [androidx.wear.watchface.Renderer.GlesRenderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer) |

Known direct subclasses [ListenableGlesRenderer](https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer), [Renderer.GlesRenderer2](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer2)

|---|---|
| `https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer` | **This class is deprecated.** Use ListenableGlesRenderer2 instead |
| `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer2` | **This class is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |

Known indirect subclasses [ListenableGlesRenderer2](https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer2)

|---|---|
| `https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer2` | **This class is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |

*** ** * ** ***

> [!CAUTION]
> **This class is deprecated.**   
> GlesRenderer is deprecated, use this instead:
>
> ```
> GlesRenderer2
> ```

Watch faces that require `https://developer.android.com/reference/android/opengl/GLES20.html` rendering should extend their `https://developer.android.com/reference/androidx/wear/watchface/Renderer` from this class or `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer2` if they can take advantage of `https://developer.android.com/reference/androidx/wear/watchface/Renderer.SharedAssets` to save memory when editing (there can be more than once WatchFace instance when editing).

A GlesRenderer is expected to be constructed on the background thread associated with `https://developer.android.com/reference/androidx/wear/watchface/WatchFaceService#getBackgroundThreadHandler()` inside a call to `https://developer.android.com/reference/androidx/wear/watchface/WatchFaceService#createWatchFace(android.view.SurfaceHolder,androidx.wear.watchface.WatchState,androidx.wear.watchface.ComplicationSlotsManager,androidx.wear.watchface.style.CurrentUserStyleRepository)`. All rendering is be done on the UiThread. There is a memory barrier between construction and rendering so no special threading primitives are required.

Two linked `https://developer.android.com/reference/android/opengl/EGLContext.html`s are created `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#eglBackgroundThreadContext()` and `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#eglUiThreadContext()` which are associated with background and UiThread respectively and are shared by all instances of the renderer. OpenGL objects created on (e.g. shaders and textures) can be used on the other.

If you need to make any OpenGl calls outside of `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#render(java.time.ZonedDateTime)`, `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onBackgroundThreadGlContextCreated()` or `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onUiThreadGlSurfaceCreated(kotlin.Int,kotlin.Int)` then you must use either `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runUiThreadGlCommands(kotlin.coroutines.SuspendFunction0)` or `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runBackgroundThreadGlCommands(kotlin.coroutines.SuspendFunction0)` to execute a `https://developer.android.com/reference/java/lang/Runnable.html` inside of the corresponding context. Access to the GL contexts this way is necessary because GL contexts are not shared between renderers and there can be multiple watch face instances existing concurrently (e.g. headless and interactive, potentially from different watch faces if an APK contains more than one `https://developer.android.com/reference/androidx/wear/watchface/WatchFaceService`). In addition most drivers do not support concurrent access.

In Java it may be easier to extend `https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer` instead.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer.GlesException extends https://developer.android.com/reference/java/lang/Exception.html` **This class is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |

| ### Public constructors |
|---|
| `@https://developer.android.com/reference/androidx/annotation/WorkerThread [GlesRenderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#GlesRenderer(android.view.SurfaceHolder,androidx.wear.watchface.style.CurrentUserStyleRepository,androidx.wear.watchface.WatchState,kotlin.Long,kotlin.IntArray,kotlin.IntArray,kotlin.IntArray))( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/view/SurfaceHolder.html surfaceHolder, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/style/CurrentUserStyleRepository currentUserStyleRepository, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/WatchState watchState, @https://developer.android.com/reference/androidx/annotation/IntRange(from = 0, to = 60000) long interactiveDrawModeUpdateDelayMillis, @https://developer.android.com/reference/androidx/annotation/NonNull int[] eglConfigAttribList, @https://developer.android.com/reference/androidx/annotation/NonNull int[] eglSurfaceAttribList, @https://developer.android.com/reference/androidx/annotation/NonNull int[] eglContextAttribList )` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/opengl/EGLContext.html` | `[getEglBackgroundThreadContext](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#getEglBackgroundThreadContext())()` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/opengl/EGLConfig.html` | `[getEglConfig](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#getEglConfig())()` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/opengl/EGLDisplay.html` | `[getEglDisplay](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#getEglDisplay())()` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/opengl/EGLContext.html` | `[getEglUiThreadContext](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#getEglUiThreadContext())()` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `void` | `@https://developer.android.com/reference/androidx/annotation/WorkerThread [onBackgroundThreadGlContextCreated](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onBackgroundThreadGlContextCreated())()` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper [onDestroy](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onDestroy())()` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `void` | `[onDump](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onDump(java.io.PrintWriter))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/io/PrintWriter.html writer)` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `void` | `@https://developer.android.com/reference/androidx/annotation/UiThread [onUiThreadGlSurfaceCreated](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onUiThreadGlSurfaceCreated(kotlin.Int,kotlin.Int))(@https://developer.android.com/reference/androidx/annotation/Px int width, @https://developer.android.com/reference/androidx/annotation/Px int height)` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `abstract void` | `@https://developer.android.com/reference/androidx/annotation/UiThread [render](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#render(java.time.ZonedDateTime))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/time/ZonedDateTime.html zonedDateTime)` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `abstract void` | `@https://developer.android.com/reference/androidx/annotation/UiThread [renderHighlightLayer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#renderHighlightLayer(java.time.ZonedDateTime))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/time/ZonedDateTime.html zonedDateTime)` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `final void` | `@https://developer.android.com/reference/androidx/annotation/WorkerThread [runBackgroundThreadGlCommands](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runBackgroundThreadGlCommands(kotlin.coroutines.SuspendFunction0))(@https://developer.android.com/reference/androidx/annotation/NonNull SuspendFunction0<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> commands)` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `final void` | `[runUiThreadGlCommands](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runUiThreadGlCommands(kotlin.coroutines.SuspendFunction0))(@https://developer.android.com/reference/androidx/annotation/NonNull SuspendFunction0<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> commands)` **This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
| `final void` | `[setEglConfig](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#setEglConfig(android.opengl.EGLConfig))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/opengl/EGLConfig.html eglConfig)` **This method is deprecated.** It's not intended for eglConfig to be set |
| `final void` | `[setEglDisplay](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#setEglDisplay(android.opengl.EGLDisplay))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/opengl/EGLDisplay.html eglDisplay)` **This method is deprecated.** It's not intended for eglDisplay to be set |

### Inherited methods

From [androidx.wear.watchface.Renderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer) `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Collection.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-pair/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Integer.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/ContentDescriptionLabel>>` `[getAdditionalContentDescriptionLabels](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getAdditionalContentDescriptionLabels())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final float` `[getCenterX](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getCenterX())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final float` `[getCenterY](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getCenterY())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final long` `[getInteractiveDrawModeUpdateDelayMillis](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getInteractiveDrawModeUpdateDelayMillis())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/graphics/Rect.html` `@https://developer.android.com/reference/androidx/annotation/UiThread
[getMainClockElementBounds](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getMainClockElementBounds())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/RenderParameters` `[getRenderParameters](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getRenderParameters())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/graphics/Rect.html` `[getScreenBounds](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getScreenBounds())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/view/SurfaceHolder.html` `[getSurfaceHolder](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getSurfaceHolder())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final https://developer.android.com/reference/androidx/wear/watchface/WatchFaceColors` `@https://developer.android.com/reference/androidx/wear/watchface/WatchFaceExperimental
[getWatchfaceColors](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getWatchfaceColors())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final void` `@https://developer.android.com/reference/androidx/annotation/UiThread
[invalidate](https://developer.android.com/reference/androidx/wear/watchface/Renderer#invalidate())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`void` `@https://developer.android.com/reference/androidx/annotation/UiThread
[onRenderParametersChanged](https://developer.android.com/reference/androidx/wear/watchface/Renderer#onRenderParametersChanged(androidx.wear.watchface.RenderParameters))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/RenderParameters renderParameters)`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final void` `[postInvalidate](https://developer.android.com/reference/androidx/wear/watchface/Renderer#postInvalidate())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final void` `[sendPreviewImageNeedsUpdateRequest](https://developer.android.com/reference/androidx/wear/watchface/Renderer#sendPreviewImageNeedsUpdateRequest())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final void` `[setAdditionalContentDescriptionLabels](https://developer.android.com/reference/androidx/wear/watchface/Renderer#setAdditionalContentDescriptionLabels(kotlin.collections.Collection))(
@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Collection.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-pair/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Integer.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/ContentDescriptionLabel>> value
)`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final void` `[setInteractiveDrawModeUpdateDelayMillis](https://developer.android.com/reference/androidx/wear/watchface/Renderer#setInteractiveDrawModeUpdateDelayMillis(kotlin.Long))(long value)`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final void` `[setSurfaceHolder](https://developer.android.com/reference/androidx/wear/watchface/Renderer#setSurfaceHolder(android.view.SurfaceHolder))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/view/SurfaceHolder.html value)`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`final void` `@https://developer.android.com/reference/androidx/wear/watchface/WatchFaceExperimental
[setWatchfaceColors](https://developer.android.com/reference/androidx/wear/watchface/Renderer#setWatchfaceColors(androidx.wear.watchface.WatchFaceColors))(https://developer.android.com/reference/androidx/wear/watchface/WatchFaceColors value)`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.
`boolean` `@https://developer.android.com/reference/androidx/annotation/UiThread
[shouldAnimate](https://developer.android.com/reference/androidx/wear/watchface/Renderer#shouldAnimate())()`

**This method is deprecated.** AndroidX watchface libraries are deprecated, use Watch Face Format instead.

## Public constructors

### GlesRenderer

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.2.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.2.0)

```
@WorkerThread
public [GlesRenderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#GlesRenderer(android.view.SurfaceHolder,androidx.wear.watchface.style.CurrentUserStyleRepository,androidx.wear.watchface.WatchState,kotlin.Long,kotlin.IntArray,kotlin.IntArray,kotlin.IntArray))(
    @NonNull SurfaceHolder surfaceHolder,
    @NonNull CurrentUserStyleRepository currentUserStyleRepository,
    @NonNull WatchState watchState,
    @IntRange(from = 0, to = 60000) long interactiveDrawModeUpdateDelayMillis,
    @NonNull int[] eglConfigAttribList,
    @NonNull int[] eglSurfaceAttribList,
    @NonNull int[] eglContextAttribList
)
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Constructs a `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer`, it is recommended that new code uses `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer2` instead.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/view/SurfaceHolder.html surfaceHolder` | The `https://developer.android.com/reference/android/view/SurfaceHolder.html` whose `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#render(java.time.ZonedDateTime)` will draw into. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/style/CurrentUserStyleRepository currentUserStyleRepository` | The associated `https://developer.android.com/reference/androidx/wear/watchface/style/CurrentUserStyleRepository`. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/WatchState watchState` | The associated `https://developer.android.com/reference/androidx/wear/watchface/WatchState`. |
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0, to = 60000) long interactiveDrawModeUpdateDelayMillis` | The interval in milliseconds between frames in interactive `https://developer.android.com/reference/androidx/wear/watchface/DrawMode`s. To render at 60hz set to 16. Note when battery is low, the frame rate will be clamped to 10fps. Watch faces are recommended to use lower frame rates if possible for better battery life. Variable frame rates can also help preserve battery life, e.g. if a watch face has a short animation once per second it can adjust the frame rate inorder to sleep when not animating. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull int[] eglConfigAttribList` | Attributes for `https://developer.android.com/reference/android/opengl/EGL14.html#eglChooseConfig(android.opengl.EGLDisplay, int[], int, android.opengl.EGLConfig[], int, int, int[], int)`. By default this selects an RGBA8888 back buffer. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull int[] eglSurfaceAttribList` | The attributes to be passed to `https://developer.android.com/reference/android/opengl/EGL14.html#eglCreateWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, java.lang.Object, int[], int)`. By default this is empty. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull int[] eglContextAttribList` | The attributes to be passed to `https://developer.android.com/reference/android/opengl/EGL14.html#eglCreateContext(android.opengl.EGLDisplay, android.opengl.EGLConfig, android.opengl.EGLContext, int[], int)`. By default this selects `https://developer.android.com/reference/android/opengl/EGL14.html#EGL_CONTEXT_CLIENT_VERSION` 2. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer.GlesException` | If any GL calls fail during initialization. |

## Public methods

### getEglBackgroundThreadContext

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public final @NonNull EGLContext [getEglBackgroundThreadContext](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#getEglBackgroundThreadContext())()
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

The GlesRenderer's background Thread `https://developer.android.com/reference/android/opengl/EGLContext.html`.

### getEglConfig

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public final @NonNull EGLConfig [getEglConfig](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#getEglConfig())()
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

The GlesRenderer's `https://developer.android.com/reference/android/opengl/EGLConfig.html`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unsupported-operation-exception/index.html` | setEglConfig is unsupported. |

### getEglDisplay

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public final @NonNull EGLDisplay [getEglDisplay](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#getEglDisplay())()
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

The GlesRenderer's `https://developer.android.com/reference/android/opengl/EGLDisplay.html`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unsupported-operation-exception/index.html` | setEglDisplay is unsupported. |

### getEglUiThreadContext

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public final @NonNull EGLContext [getEglUiThreadContext](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#getEglUiThreadContext())()
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

The GlesRenderer's UiThread `https://developer.android.com/reference/android/opengl/EGLContext.html`. Note this not available until after `https://developer.android.com/reference/androidx/wear/watchface/WatchFaceService#createWatchFace(android.view.SurfaceHolder,androidx.wear.watchface.WatchState,androidx.wear.watchface.ComplicationSlotsManager,androidx.wear.watchface.style.CurrentUserStyleRepository)` has completed.

### onBackgroundThreadGlContextCreated

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
@WorkerThread
public void [onBackgroundThreadGlContextCreated](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onBackgroundThreadGlContextCreated())()
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Called once a background thread when a new GL context is created on the background thread, before any subsequent calls to `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#render(java.time.ZonedDateTime)`. Note this function is called inside a lambda passed to `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runBackgroundThreadGlCommands(kotlin.coroutines.SuspendFunction0)` which has synchronized access to the GL context.

If you need to override this method in java, consider using `https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer` instead.

### onDestroy

```
@CallSuper
public void [onDestroy](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onDestroy())()
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Called when the Renderer is destroyed.

### onDump

```
public void [onDump](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onDump(java.io.PrintWriter))(@NonNull PrintWriter writer)
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Called when adb shell dumpsys is invoked for the WatchFaceService, allowing the renderer to optionally record state for debugging purposes.

### onUiThreadGlSurfaceCreated

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
@UiThread
public void [onUiThreadGlSurfaceCreated](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onUiThreadGlSurfaceCreated(kotlin.Int,kotlin.Int))(@Px int width, @Px int height)
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Called when a new GL surface is created on the UiThread, before any subsequent calls to `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#render(java.time.ZonedDateTime)` or in response to `https://developer.android.com/reference/android/view/SurfaceHolder.Callback.html#surfaceChanged(android.view.SurfaceHolder, int, int, int)`. Note this function is called inside a lambda passed to `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runUiThreadGlCommands(kotlin.coroutines.SuspendFunction0)` which has synchronized access to the GL context.

If you need to override this method in java, consider using `https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer` instead.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Px int width` | width of surface in pixels |
| `@https://developer.android.com/reference/androidx/annotation/Px int height` | height of surface in pixels |

### render

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
@UiThread
public abstract void [render](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#render(java.time.ZonedDateTime))(@NonNull ZonedDateTime zonedDateTime)
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Sub-classes should override this to implement their watch face rendering logic which should respect the current `https://developer.android.com/reference/androidx/wear/watchface/Renderer#renderParameters()`. Please note `https://developer.android.com/reference/androidx/wear/watchface/WatchState#isAmbient()` may not match the `https://developer.android.com/reference/androidx/wear/watchface/RenderParameters#drawMode()` and should not be used to decide what to render. E.g. when editing from the companion phone while the watch is ambient, renders may be requested with `https://developer.android.com/reference/androidx/wear/watchface/DrawMode#INTERACTIVE`.

Any highlights due to `https://developer.android.com/reference/androidx/wear/watchface/RenderParameters#highlightLayer()` should be rendered by `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#renderHighlightLayer(java.time.ZonedDateTime)` instead where possible. For correct behavior this function must use the supplied `https://developer.android.com/reference/java/time/ZonedDateTime.html` in favor of any other ways of getting the time.

Note this function is called inside a lambda passed to `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runUiThreadGlCommands(kotlin.coroutines.SuspendFunction0)` which has synchronized access to the GL context.

Note also `GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO)` is called by the library before this method.

Before any calls to this function `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onBackgroundThreadGlContextCreated()` and `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#onUiThreadGlSurfaceCreated(kotlin.Int,kotlin.Int)` will have been called once on their respective threads.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/time/ZonedDateTime.html zonedDateTime` | The zonedDateTime `https://developer.android.com/reference/java/time/ZonedDateTime.html` to render with |

### renderHighlightLayer

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
@UiThread
public abstract void [renderHighlightLayer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#renderHighlightLayer(java.time.ZonedDateTime))(@NonNull ZonedDateTime zonedDateTime)
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Sub-classes should override this to implement their watch face highlight layer rendering logic for the `https://developer.android.com/reference/androidx/wear/watchface/RenderParameters#highlightLayer()` aspect of `https://developer.android.com/reference/androidx/wear/watchface/Renderer#renderParameters()`. Typically the implementation will clear the buffer to `https://developer.android.com/reference/androidx/wear/watchface/RenderParameters.HighlightLayer#backgroundTint()` before rendering a transparent highlight or a solid outline around the `https://developer.android.com/reference/androidx/wear/watchface/RenderParameters.HighlightLayer#highlightedElement()`. This will be composited as needed on top of the results of `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#render(java.time.ZonedDateTime)`. For correct behavior this function must use the supplied `https://developer.android.com/reference/java/time/ZonedDateTime.html` in favor of any other ways of getting the time.

Note this function is called inside a lambda passed to `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runUiThreadGlCommands(kotlin.coroutines.SuspendFunction0)` which has synchronized access to the GL context.

Note also `GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO)` is called by the library before this method.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/time/ZonedDateTime.html zonedDateTime` | The zonedDateTime `https://developer.android.com/reference/java/time/ZonedDateTime.html` to render with |

### runBackgroundThreadGlCommands

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
@WorkerThread
public final void [runBackgroundThreadGlCommands](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runBackgroundThreadGlCommands(kotlin.coroutines.SuspendFunction0))(@NonNull SuspendFunction0<Unit> commands)
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Inside of a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.sync/-mutex/index.html` this function sets the GL context associated with the `https://developer.android.com/reference/androidx/wear/watchface/WatchFaceService#getBackgroundThreadHandler()`'s looper thread as the current one, executes `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runBackgroundThreadGlCommands(kotlin.coroutines.SuspendFunction0)` and finally unsets the GL context.

Access to the GL context this way is necessary because GL contexts are not shared between renderers and there can be multiple watch face instances existing concurrently (e.g. headless and interactive, potentially from different watch faces if an APK contains more than one `https://developer.android.com/reference/androidx/wear/watchface/WatchFaceService`).

NB this function is called by the library before running `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runBackgroundThreadGlCommands(kotlin.coroutines.SuspendFunction0)` so there's no need to use this directly in client code unless you need to make GL calls outside of those methods. If you need to call this method from java, consider using `https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer` which provides an overload taking a `https://developer.android.com/reference/java/lang/Runnable.html`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if the calls to `https://developer.android.com/reference/android/opengl/EGL14.html#eglMakeCurrent(android.opengl.EGLDisplay, android.opengl.EGLSurface, android.opengl.EGLSurface, android.opengl.EGLContext)` fails |

### runUiThreadGlCommands

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public final void [runUiThreadGlCommands](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runUiThreadGlCommands(kotlin.coroutines.SuspendFunction0))(@NonNull SuspendFunction0<Unit> commands)
```

> [!CAUTION]
> **This method is deprecated.**   
> AndroidX watchface libraries are deprecated, use Watch Face Format instead. For more info see: https://developer.android.com/training/wearables/wff

Inside of a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.sync/-mutex/index.html` this function sets the UiThread GL context as the current one, executes `https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#runUiThreadGlCommands(kotlin.coroutines.SuspendFunction0)` and finally unsets the GL context.

Access to the GL context this way is necessary because GL contexts are not shared between renderers and there can be multiple watch face instances existing concurrently (e.g. headless and interactive, potentially from different watch faces if an APK contains more than one `https://developer.android.com/reference/androidx/wear/watchface/WatchFaceService`).

If you need to call this method from java, consider using `https://developer.android.com/reference/androidx/wear/watchface/ListenableGlesRenderer` which provides an overload taking a `https://developer.android.com/reference/java/lang/Runnable.html`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if the calls to `https://developer.android.com/reference/android/opengl/EGL14.html#eglMakeCurrent(android.opengl.EGLDisplay, android.opengl.EGLSurface, android.opengl.EGLSurface, android.opengl.EGLContext)` fails |

### setEglConfig

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public final void [setEglConfig](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#setEglConfig(android.opengl.EGLConfig))(@NonNull EGLConfig eglConfig)
```

> [!CAUTION]
> **This method is deprecated.**   
> It's not intended for eglConfig to be set

The GlesRenderer's `https://developer.android.com/reference/android/opengl/EGLConfig.html`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unsupported-operation-exception/index.html` | setEglConfig is unsupported. |

### setEglDisplay

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public final void [setEglDisplay](https://developer.android.com/reference/androidx/wear/watchface/Renderer.GlesRenderer#setEglDisplay(android.opengl.EGLDisplay))(@NonNull EGLDisplay eglDisplay)
```

> [!CAUTION]
> **This method is deprecated.**   
> It's not intended for eglDisplay to be set

The GlesRenderer's `https://developer.android.com/reference/android/opengl/EGLDisplay.html`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unsupported-operation-exception/index.html` | setEglDisplay is unsupported. |