Interface CustomDrawable.DrawHandler
- All Superinterfaces:
AutoCloseable
- Enclosing interface:
CustomDrawable
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
When the engine backend flushes to the 3D API it will call the draw(icyllis.arc3d.engine.ImmediateContext, icyllis.arc3d.engine.DrawableInfo)
on the
DrawHandler. At this time the drawable may add commands to the stream of commands for
the underlying 3D API. The draw function takes a DirectContext and a DrawableInfo
which contains information about the current state of 3D API which the caller must
respect. See DrawableInfo subclasses for more specific details on what information
is sent and the requirements for different 3D APIs.
Additionally there may be a slight delay from when the drawable adds its commands
to when those commands are actually submitted to the GPU. Thus the drawable or
DrawHandler is required to keep any resources that are used by its added commands
alive and valid until those commands are submitted to the driver. The DrawHandler
will be kept alive and then closed once the commands are submitted to the driver.
The close()
of the DrawHandler is the signal to the drawable that the
commands have all been submitted. Different 3D APIs may have additional requirements
for certain resources which require waiting for the driver to finish all work on
those resources before reusing or deleting them. In this case, the drawable can
use the close call of the DrawHandler to add a fence to the GPU to track when the
GPU work has completed.
-
Method Summary
Modifier and TypeMethodDescriptiondefault void
close()
This is called when the draw call is submitted, used to clean up backend resources created along with this object.void
draw
(ImmediateContext dc, DrawableInfo info) The direct context may be used to invalidate backend context states.
-
Method Details
-
draw
The direct context may be used to invalidate backend context states.- Parameters:
dc
- the direct contextinfo
- the backend specified info used to draw the drawable
-
close
default void close()This is called when the draw call is submitted, used to clean up backend resources created along with this object.- Specified by:
close
in interfaceAutoCloseable
-