public final class EGLManager


Class responsible for configuration of EGL related resources. This includes initialization of the corresponding EGL Display as well as EGL Context, among other EGL related facilities.

Summary

Public constructors

Public methods

final @NonNull EGLContext

Creates an EGLContext from the given EGLConfig returning null if the context could not be created

final @NonNull EGLSurface

Returns the current surface used for drawing pixel content

final @NonNull EGLSurface

Returns the current surface used for reading back or copying pixels

final @NonNull EGLSurface

Returns the default surface.

final EGLConfig

Returns the EGLConfig used to load the current EGLContext.

final EGLContext

Returns the current EGLContext.

final @NonNull EGLSpec
final @NonNull EGLVersion

Returns the EGL version that is supported.

final void

Initialize the EGLManager.

final boolean

Determines whether the extension with the provided name is supported.

final EGLConfig

Attempt to load an EGLConfig instance from the given EGLConfigAttributes.

final boolean
makeCurrent(
    @NonNull EGLSurface drawSurface,
    @NonNull EGLSurface readSurface
)

Binds the current context to the given draw and read surfaces.

final void

Release the resources allocated by EGLManager.

final void

Post EGL surface color buffer to a native window.

Public constructors

EGLManager

Added in 1.0.0-beta01
public EGLManager(@NonNull EGLSpec eglSpec)

Public methods

createContext

Added in 1.0.0-beta01
public final @NonNull EGLContext createContext(@NonNull EGLConfig config)

Creates an EGLContext from the given EGLConfig returning null if the context could not be created

Throws
androidx.graphics.opengl.egl.EGLException

if the default surface could not be made current after context creation

getCurrentDrawSurface

Added in 1.0.0-beta01
public final @NonNull EGLSurface getCurrentDrawSurface()

Returns the current surface used for drawing pixel content

getCurrentReadSurface

Added in 1.0.0-beta01
public final @NonNull EGLSurface getCurrentReadSurface()

Returns the current surface used for reading back or copying pixels

getDefaultSurface

Added in 1.0.0-beta01
public final @NonNull EGLSurface getDefaultSurface()

Returns the default surface. This can be an offscreen pixel buffer surface or EGL14.EGL_NO_SURFACE if the surfaceless context extension is supported.

getEGLConfig

Added in 1.0.0-beta01
public final EGLConfig getEGLConfig()

Returns the EGLConfig used to load the current EGLContext. This is configured after createContext is invoked.

getEGLContext

Added in 1.0.0-beta01
public final EGLContext getEGLContext()

Returns the current EGLContext. This parameter is configured after initialize is invoked

getEGLSpec

Added in 1.0.0-beta01
public final @NonNull EGLSpec getEGLSpec()

getEGLVersion

Added in 1.0.0-beta01
public final @NonNull EGLVersion getEGLVersion()

Returns the EGL version that is supported. This parameter is configured after initialize is invoked.

initialize

Added in 1.0.0-beta01
public final void initialize()

Initialize the EGLManager. This initializes the default display as well as queries the supported extensions

isExtensionSupported

Added in 1.0.0-beta01
public final boolean isExtensionSupported(@NonNull String extensionName)

Determines whether the extension with the provided name is supported. The string provided is expected to be one of the named extensions defined within the OpenGL extension documentation.

See EGLExt for additional documentation for given extension name constants and descriptions.

The set of supported extensions is configured after initialize is invoked. Attempts to query support for any extension beforehand will return false.

loadConfig

Added in 1.0.0-beta01
public final EGLConfig loadConfig(@NonNull EGLConfigAttributes configAttributes)

Attempt to load an EGLConfig instance from the given EGLConfigAttributes. If the EGLConfig could not be loaded this returns null

makeCurrent

Added in 1.0.0-beta01
public final boolean makeCurrent(
    @NonNull EGLSurface drawSurface,
    @NonNull EGLSurface readSurface
)

Binds the current context to the given draw and read surfaces. The draw surface is used for all operations except for any pixel data read back or copy operations which are taken from the read surface.

The same EGLSurface may be specified for both draw and read surfaces.

If the context is not previously configured, the only valid parameters for the draw and read surfaces is EGL14.EGL_NO_SURFACE. This is useful to make sure there is always a surface specified and to release the current context without assigning a new one.

See https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglMakeCurrent.xhtml

Parameters
@NonNull EGLSurface drawSurface

Surface used for all operations that involve writing pixel information

@NonNull EGLSurface readSurface

Surface used for pixel data read back or copy operations. By default this is the same as drawSurface

release

Added in 1.0.0-beta01
public final void release()

Release the resources allocated by EGLManager. This will destroy the corresponding EGLContext instance if it was previously initialized. The configured EGLVersion as well as EGLExtensions

swapAndFlushBuffers

Added in 1.0.0-beta01
public final void swapAndFlushBuffers()

Post EGL surface color buffer to a native window. If the current drawing surface is single buffered this will flush the buffer