Class GraphicsDevice

java.lang.Object
com.codename1.gpu.GraphicsDevice

public abstract class GraphicsDevice extends Object

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 Details

    • GraphicsDevice

      public GraphicsDevice()
  • Method Details

    • getCapabilities

      public abstract GpuCapabilities getCapabilities()
      Returns the capabilities and limits of the underlying GPU.
    • createVertexBuffer

      public VertexBuffer createVertexBuffer(VertexFormat format, int vertexCount)

      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

      public IndexBuffer createIndexBuffer(int indexCount)

      Allocates an index buffer.

      Parameters
      • indexCount: the number of indices
      Returns

      a new index buffer tracked by this device

    • createTexture

      public abstract Texture createTexture(Image image)

      Creates a GPU texture from a Codename One image.

      Parameters
      • image: the source image
      Returns

      a new texture

    • createTexture

      public abstract Texture createTexture(int width, int height, int[] argb)

      Creates a GPU texture from raw ARGB pixel data.

      Parameters
      • width: the texture width in pixels

      • height: the texture height in pixels

      • argb: width * height packed 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

      public void setCamera(Camera camera)

      Sets the active camera supplying the view and projection matrices used by subsequent draws.

      Parameters
      • camera: the camera
    • getCamera

      public Camera getCamera()
      Returns the active camera, or null if none was set.
    • setLight

      public void setLight(Light light)

      Sets the active directional light used by lit materials.

      Parameters
      • light: the light
    • getLight

      public Light getLight()
      Returns the active light.
    • draw

      public abstract void draw(Mesh mesh, Material material, float[] modelMatrix)

      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

      public abstract void dispose(VertexBuffer buffer)
      Releases the GPU resources backing a vertex buffer.
    • dispose

      public abstract void dispose(IndexBuffer buffer)
      Releases the GPU resources backing an index buffer.
    • dispose

      public abstract void dispose(Texture texture)
      Releases the GPU resources backing a texture.