FrameBufferRenderer
@RequiresApi(value = 26)
class FrameBufferRenderer : GLRenderer.RenderCallback
GLRenderer.RenderCallback implementation that renders content into a frame buffer object backed by a HardwareBuffer object
Summary
Nested types |
|---|
interface FrameBufferRenderer.RenderCallbackCallbacks invoked to render content leveraging a |
Public constructors |
|---|
FrameBufferRenderer( |
Public functions |
|
|---|---|
Unit |
clear() |
open Unit |
onDrawFrame(eglManager: EGLManager)Callback used to issue OpenGL drawing commands into the |
open EGLSurface? |
Used to create a corresponding |
Public constructors
FrameBufferRenderer
FrameBufferRenderer(
frameBufferRendererCallbacks: FrameBufferRenderer.RenderCallback,
syncStrategy: SyncStrategy = SyncStrategy.ALWAYS
)
| Parameters | |
|---|---|
frameBufferRendererCallbacks: FrameBufferRenderer.RenderCallback |
Callbacks to provide a |
syncStrategy: SyncStrategy = SyncStrategy.ALWAYS |
This API can be used to render content into a val glRenderer = GLRenderer().apply { start() } |
Public functions
onDrawFrame
open fun onDrawFrame(eglManager: EGLManager): Unit
Callback used to issue OpenGL drawing commands into the EGLSurface created in onSurfaceCreated. This EGLSurface is guaranteed to be current before this callback is invoked and EGLManager.swapAndFlushBuffers will be invoked afterwards. If additional scratch EGLSurfaces are used here it is up to the implementation of this method to ensure that the proper surfaces are made current and the appropriate swap buffers call is made
This method is invoked on the backing thread
| Parameters | |
|---|---|
eglManager: EGLManager |
Handle to EGL dependencies |
onSurfaceCreated
open fun onSurfaceCreated(
spec: EGLSpec,
config: EGLConfig,
surface: Surface,
width: Int,
height: Int
): EGLSurface?
Used to create a corresponding EGLSurface from the provided android.view.Surface instance. This enables consumers to configure the corresponding EGLSurface they wish to render into. The EGLSurface created here is guaranteed to be the current surface before onDrawFrame is called. That is, implementations of onDrawFrame do not need to call eglMakeCurrent on this EGLSurface.
This method is invoked on the GL thread.
The default implementation will create a window surface with EGL_WIDTH and EGL_HEIGHT set to width and height respectively. Implementations can override this method to provide additional EGLConfigAttributes for this surface (ex. EGL14.EGL_SINGLE_BUFFER.
Implementations can return null to indicate the default surface should be used. This is helpful in situations where content is to be rendered within a frame buffer object instead of to an EGLSurface
| Parameters | |
|---|---|
spec: EGLSpec |
EGLSpec used to create the corresponding EGLSurface |
config: EGLConfig |
EGLConfig used to create the corresponding EGLSurface |
surface: Surface |
|
width: Int |
Desired width of the surface to create |
height: Int |
Desired height of the surface to create |