Class GraphicsDevice
The low level command surface of the 3D API, bound to a single RenderView
and its GPU context. A concrete subclass is provided by each platform
backend (OpenGL ES on Android, WebGL on the browser, Metal on iOS, desktop GL
on the simulator). Applications obtain the device from the Renderer
callbacks and never construct it directly.
The device owns shader generation and caching: when draw is called it looks
at the Material and the mesh VertexFormat, generates (once) the matching
platform shader, uploads any dirty buffers and issues the draw call.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanbeginPostProcess(PostProcess effects, int width, int height) Redirects drawing into an offscreen image soendPostProcesscan applyeffectsto it on its way to the screen.booleanbeginShadowPass(Light light) Starts rendering the light's shadow map.abstract voidclear(int argbColor, boolean color, boolean depth) Clears the framebuffer.createIndexBuffer(int indexCount) Allocates an index buffer.abstract TexturecreateTexture(int width, int height, int[] argb) Creates a GPU texture from raw ARGB pixel data.abstract TexturecreateTexture(Image image) Creates a GPU texture from a Codename One image.createVertexBuffer(VertexFormat format, int vertexCount) Allocates a vertex buffer.abstract voiddispose(IndexBuffer buffer) Releases the GPU resources backing an index buffer.abstract voidReleases the GPU resources backing a texture.abstract voiddispose(VertexBuffer buffer) Releases the GPU resources backing a vertex buffer.abstract voidDraws a mesh with the supplied material and model matrix.voidendPostProcess(float timeSeconds) Applies the effects passed tobeginPostProcessand draws the result to the screen.voidEnds the shadow pass started bybeginShadowPass, and restores the viewport and target that were active before it.Returns the active camera, or null if none was set.abstract GpuCapabilitiesReturns the capabilities and limits of the underlying GPU.Returns the active environment.getLight()Returns the active light.protected final booleanFor a backend: true once a shadow pass has ended since the camera was last set, so the map belongs to this frame.voidSets the active camera supplying the view and projection matrices used by subsequent draws.voidsetEnvironment(Environment environment) Sets the environment (fog, hemisphere ambient, tone mapping) used by subsequent draws.voidSets the active directional light used by lit materials.abstract voidsetViewport(int x, int y, int width, int height) Sets the viewport rectangle in pixels.protected final voidFor a backend: records that a shadow pass of this frame has ended.
-
Constructor Details
-
GraphicsDevice
public GraphicsDevice()
-
-
Method Details
-
getCapabilities
Returns the capabilities and limits of the underlying GPU. -
createVertexBuffer
Allocates a vertex buffer. The backing array is SIMD aligned so it can be uploaded to the GPU without an intermediate copy on ParparVM.
Parameters
-
format: the interleaved vertex layout -
vertexCount: the number of vertices
Returns
a new vertex buffer tracked by this device
-
-
createIndexBuffer
Allocates an index buffer.
Parameters
indexCount: the number of indices
Returns
a new index buffer tracked by this device
-
createTexture
-
createTexture
Creates a GPU texture from raw ARGB pixel data.
Parameters
-
width: the texture width in pixels -
height: the texture height in pixels -
argb:width * heightpacked ARGB pixels in row major order
Returns
a new texture
-
-
clear
public abstract void clear(int argbColor, boolean color, boolean depth) Clears the framebuffer.
Parameters
-
argbColor: the packed ARGB clear color -
color: true to clear the color buffer -
depth: true to clear the depth buffer
-
-
setViewport
public abstract void setViewport(int x, int y, int width, int height) Sets the viewport rectangle in pixels. -
setCamera
Sets the active camera supplying the view and projection matrices used by subsequent draws.
Setting the camera starts a new frame as far as shadows go: a shadow map rendered before it is not used again, so set the camera first and then run
beginShadowPass.Parameters
camera: the camera
-
isShadowMapCurrent
protected final boolean isShadowMapCurrent()For a backend: true once a shadow pass has ended since the camera was last set, so the map belongs to this frame. A frame that skipped the pass must not sample the one before it. -
shadowMapRendered
protected final void shadowMapRendered()For a backend: records that a shadow pass of this frame has ended. -
getCamera
Returns the active camera, or null if none was set. -
setLight
Sets the active directional light used by lit materials.
Parameters
light: the light
-
getLight
Returns the active light. -
setEnvironment
Sets the environment (fog, hemisphere ambient, tone mapping) used by subsequent draws.
Parameters
environment: the environment; null restores the default, which changes nothing
-
getEnvironment
Returns the active environment. -
beginShadowPass
Starts rendering the light's shadow map. Until
endShadowPass,drawwrites only depth as seen from the light, and skips materials that do not cast shadows. Draws afterendShadowPassthat receive shadows sample the map.The default implementation supports no shadows and returns false; the caller then skips the pass and draws as usual.
Render the shadow pass before
beginPostProcess, never inside it: both passes return to the target that was active when they began, so a shadow pass started offscreen would hand the post process its own image to draw into.Parameters
light: the light whose shadows to render; it must have shadows on
Returns
true if the pass started and the shadow casters should be drawn now
-
endShadowPass
public void endShadowPass()Ends the shadow pass started bybeginShadowPass, and restores the viewport and target that were active before it. -
beginPostProcess
Redirects drawing into an offscreen image so
endPostProcesscan applyeffectsto it on its way to the screen.The default implementation supports no post processing and returns false; the caller then draws straight to the screen.
Parameters
-
effects: the effects to apply -
width: the width of the frame in pixels -
height: the height of the frame in pixels
Returns
true if drawing now goes offscreen
-
-
endPostProcess
public void endPostProcess(float timeSeconds) Applies the effects passed to
beginPostProcessand draws the result to the screen. Drawing goes to the screen again afterwards.Parameters
timeSeconds: a running clock, which animates the film grain
-
draw
Draws a mesh with the supplied material and model matrix. The device composes
camera.getViewProjection() * modelMatrix, binds the generated shader for the material, applies the material render state and issues the draw call.Parameters
-
mesh: the geometry to draw -
material: how to shade the geometry -
modelMatrix: the 16 element column-major model transform, or null for the identity
-
-
dispose
Releases the GPU resources backing a vertex buffer. -
dispose
Releases the GPU resources backing an index buffer. -
dispose
Releases the GPU resources backing a texture.
-