EGLManager
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 |
---|
EGLManager(@NonNull EGLSpec eglSpec) |
Public methods |
|
---|---|
final @NonNull EGLContext |
createContext(@NonNull EGLConfig config) Creates an |
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 |
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 |
isExtensionSupported(@NonNull String extensionName) Determines whether the extension with the provided name is supported. |
final EGLConfig |
loadConfig(@NonNull EGLConfigAttributes configAttributes) Attempt to load an |
final boolean |
makeCurrent( Binds the current context to the given draw and read surfaces. |
final void |
release() Release the resources allocated by EGLManager. |
final void |
Post EGL surface color buffer to a native window. |
Public constructors
Public methods
createContext
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
public final @NonNull EGLSurface getCurrentDrawSurface()
Returns the current surface used for drawing pixel content
getCurrentReadSurface
public final @NonNull EGLSurface getCurrentReadSurface()
Returns the current surface used for reading back or copying pixels
getDefaultSurface
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
public final EGLConfig getEGLConfig()
Returns the EGLConfig
used to load the current EGLContext
. This is configured after createContext
is invoked.
getEGLContext
public final EGLContext getEGLContext()
Returns the current EGLContext. This parameter is configured after initialize
is invoked
getEGLVersion
public final @NonNull EGLVersion getEGLVersion()
Returns the EGL version that is supported. This parameter is configured after initialize
is invoked.
initialize
public final void initialize()
Initialize the EGLManager. This initializes the default display as well as queries the supported extensions
isExtensionSupported
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
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
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 |
release
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
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