Class VertexArray

java.lang.Object
gaiasky.util.gdx.mesh.VertexArray
All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable, IntVertexData

public class VertexArray
extends java.lang.Object
implements IntVertexData

Convenience class for working with OpenGL vertex arrays. It interleaves all data in the order you specified in the constructor via VertexAttribute.

This class is not compatible with OpenGL 3+ core profiles. For this VertexBufferObjects are needed.

  • Constructor Summary

    Constructors
    Constructor Description
    VertexArray​(int numVertices, com.badlogic.gdx.graphics.VertexAttribute... attributes)
    Constructs a new interleaved VertexArray
    VertexArray​(int numVertices, com.badlogic.gdx.graphics.VertexAttributes attributes)
    Constructs a new interleaved VertexArray
  • Method Summary

    Modifier and Type Method Description
    void bind​(ExtShaderProgram shader)
    Binds this VertexData for rendering via glDrawArrays or glDrawElements.
    void bind​(ExtShaderProgram shader, int[] locations)
    Binds this VertexData for rendering via glDrawArrays or glDrawElements.
    void dispose()
    Disposes this VertexData and all its associated OpenGL resources.
    com.badlogic.gdx.graphics.VertexAttributes getAttributes()  
    java.nio.FloatBuffer getBuffer()
    Returns the underlying FloatBuffer and marks it as dirty, causing the buffer contents to be uploaded on the next call to bind.
    int getNumMaxVertices()  
    int getNumVertices()  
    void invalidate()
    Invalidates the VertexData if applicable.
    void setVertices​(float[] vertices, int offset, int count)
    Sets the vertices of this VertexData, discarding the old vertex data.
    void unbind​(ExtShaderProgram shader)
    Unbinds this VertexBufferObject.
    void unbind​(ExtShaderProgram shader, int[] locations)
    Unbinds this VertexData.
    void updateVertices​(int targetOffset, float[] vertices, int sourceOffset, int count)
    Update (a portion of) the vertices.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • VertexArray

      public VertexArray​(int numVertices, com.badlogic.gdx.graphics.VertexAttribute... attributes)
      Constructs a new interleaved VertexArray
      Parameters:
      numVertices - the maximum number of vertices
      attributes - the VertexAttributes
    • VertexArray

      public VertexArray​(int numVertices, com.badlogic.gdx.graphics.VertexAttributes attributes)
      Constructs a new interleaved VertexArray
      Parameters:
      numVertices - the maximum number of vertices
      attributes - the VertexAttributes
  • Method Details

    • dispose

      public void dispose()
      Description copied from interface: IntVertexData
      Disposes this VertexData and all its associated OpenGL resources.
      Specified by:
      dispose in interface com.badlogic.gdx.utils.Disposable
      Specified by:
      dispose in interface IntVertexData
    • getBuffer

      public java.nio.FloatBuffer getBuffer()
      Description copied from interface: IntVertexData
      Returns the underlying FloatBuffer and marks it as dirty, causing the buffer contents to be uploaded on the next call to bind. If you need immediate uploading use IntVertexData.setVertices(float[], int, int); Any modifications made to the Buffer *after* the call to bind will not automatically be uploaded.
      Specified by:
      getBuffer in interface IntVertexData
      Returns:
      the underlying FloatBuffer holding the vertex data.
    • getNumVertices

      public int getNumVertices()
      Specified by:
      getNumVertices in interface IntVertexData
      Returns:
      the number of vertices this VertexData stores
    • getNumMaxVertices

      public int getNumMaxVertices()
      Specified by:
      getNumMaxVertices in interface IntVertexData
      Returns:
      the number of vertices this VertedData can store
    • setVertices

      public void setVertices​(float[] vertices, int offset, int count)
      Description copied from interface: IntVertexData
      Sets the vertices of this VertexData, discarding the old vertex data. The count must equal the number of floats per vertex times the number of vertices to be copied to this VertexData. The order of the vertex attributes must be the same as specified at construction time via VertexAttributes.

      This can be called in between calls to bind and unbind. The vertex data will be updated instantly.

      Specified by:
      setVertices in interface IntVertexData
      Parameters:
      vertices - the vertex data
      offset - the offset to start copying the data from
      count - the number of floats to copy
    • updateVertices

      public void updateVertices​(int targetOffset, float[] vertices, int sourceOffset, int count)
      Description copied from interface: IntVertexData
      Update (a portion of) the vertices. Does not resize the backing buffer.
      Specified by:
      updateVertices in interface IntVertexData
      vertices - the vertex data
      sourceOffset - the offset to start copying the data from
      count - the number of floats to copy
    • bind

      public void bind​(ExtShaderProgram shader)
      Description copied from interface: IntVertexData
      Binds this VertexData for rendering via glDrawArrays or glDrawElements.
      Specified by:
      bind in interface IntVertexData
    • bind

      public void bind​(ExtShaderProgram shader, int[] locations)
      Description copied from interface: IntVertexData
      Binds this VertexData for rendering via glDrawArrays or glDrawElements.
      Specified by:
      bind in interface IntVertexData
      locations - array containing the attribute locations.
    • unbind

      public void unbind​(ExtShaderProgram shader)
      Unbinds this VertexBufferObject.
      Specified by:
      unbind in interface IntVertexData
      Parameters:
      shader - the shader
    • unbind

      public void unbind​(ExtShaderProgram shader, int[] locations)
      Description copied from interface: IntVertexData
      Unbinds this VertexData.
      Specified by:
      unbind in interface IntVertexData
      locations - array containing the attribute locations.
    • getAttributes

      public com.badlogic.gdx.graphics.VertexAttributes getAttributes()
      Specified by:
      getAttributes in interface IntVertexData
      Returns:
      the VertexAttributes as specified during construction.
    • invalidate

      public void invalidate()
      Description copied from interface: IntVertexData
      Invalidates the VertexData if applicable. Use this in case of a context loss.
      Specified by:
      invalidate in interface IntVertexData