Class VertexBufferObjectSubData

  • All Implemented Interfaces:
    com.badlogic.gdx.utils.Disposable, IntVertexData

    public class VertexBufferObjectSubData
    extends java.lang.Object
    implements IntVertexData

    A VertexData implementation based on OpenGL vertex buffer objects.

    If the OpenGL ES context was lost you can call invalidate() to recreate a new OpenGL vertex buffer object.

    The data is bound via glVertexAttribPointer() according to the attribute aliases specified via VertexAttributes in the constructor.

    VertexBufferObjects must be disposed via the dispose() method when no longer needed

    • Constructor Summary

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void bind​(ExtShaderProgram shader)
      Binds this VertexBufferObject for rendering via glDrawArrays or glDrawElements
      void bind​(ExtShaderProgram shader, int[] locations)
      Binds this VertexData for rendering via glDrawArrays or glDrawElements.
      void dispose()
      Disposes of all resources this VertexBufferObject uses.
      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 getBufferHandle()
      Returns the VBO handle
      int getNumMaxVertices()  
      int getNumVertices()  
      void invalidate()
      Invalidates the VertexBufferObject so a new OpenGL buffer handle is created.
      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 Detail

      • VertexBufferObjectSubData

        public VertexBufferObjectSubData​(boolean isStatic,
                                         int numVertices,
                                         com.badlogic.gdx.graphics.VertexAttribute... attributes)
        Constructs a new interleaved VertexBufferObject.
        Parameters:
        isStatic - whether the vertex data is static.
        numVertices - the maximum number of vertices
        attributes - the VertexAttributes.
      • VertexBufferObjectSubData

        public VertexBufferObjectSubData​(boolean isStatic,
                                         int numVertices,
                                         com.badlogic.gdx.graphics.VertexAttributes attributes)
        Constructs a new interleaved VertexBufferObject.
        Parameters:
        isStatic - whether the vertex data is static.
        numVertices - the maximum number of vertices
        attributes - the VertexAttributes.
    • Method Detail

      • getAttributes

        public com.badlogic.gdx.graphics.VertexAttributes getAttributes()
        Specified by:
        getAttributes in interface IntVertexData
        Returns:
        the VertexAttributes as specified during construction.
      • 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
      • 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.
      • 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)
        Binds this VertexBufferObject for rendering via glDrawArrays or glDrawElements
        Specified by:
        bind in interface IntVertexData
        Parameters:
        shader - the shader
      • 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,
                           int[] locations)
        Description copied from interface: IntVertexData
        Unbinds this VertexData.
        Specified by:
        unbind in interface IntVertexData
        locations - array containing the attribute locations.
      • invalidate

        public void invalidate()
        Invalidates the VertexBufferObject so a new OpenGL buffer handle is created. Use this in case of a context loss.
        Specified by:
        invalidate in interface IntVertexData
      • dispose

        public void dispose()
        Disposes of all resources this VertexBufferObject uses.
        Specified by:
        dispose in interface com.badlogic.gdx.utils.Disposable
        Specified by:
        dispose in interface IntVertexData
      • getBufferHandle

        public int getBufferHandle()
        Returns the VBO handle
        Returns:
        the VBO handle