Class GLArrayDataServer

All Implemented Interfaces:
GLArrayData, GLArrayDataEditable

public class GLArrayDataServer extends GLArrayDataClient implements GLArrayDataEditable
  • Constructor Details

    • GLArrayDataServer

      public GLArrayDataServer(GLArrayDataServer src)
      Copy Constructor

      Buffer is sliced, i.e. sharing content but using own state.

      All other values are simply copied.

  • Method Details

    • createFixed

      public static GLArrayDataServer createFixed(int index, int compsPerElement, int dataType, boolean normalized, int stride, Buffer buffer, int vboUsage) throws GLException
      Create a VBO, using a predefined fixed function array index and starting with a given Buffer object incl it's stride On profiles GL2 and ES1 the fixed function pipeline behavior is as expected. On profile ES2 the fixed function emulation will transform these calls to EnableVertexAttribArray and VertexAttribPointer calls, and a predefined vertex attribute variable name will be chosen. The default name mapping will be used, see GLPointerFuncUtil.getPredefinedArrayIndexName(int).
      Parameters:
      index - The GL array index
      compsPerElement - component count per element
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      stride - in bytes from one element to the other. If zero, compsPerElement * compSizeInBytes
      buffer - the user define data
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
      See Also:
      • com.jogamp.opengl.GLContext#getPredefinedArrayIndexName(int)
    • createFixed

      public static GLArrayDataServer createFixed(int index, int compsPerElement, int dataType, boolean normalized, int initialElementCount, int vboUsage) throws GLException
      Create a VBO, using a predefined fixed function array index and starting with a new created Buffer object with initialElementCount size On profiles GL2 and ES1 the fixed function pipeline behavior is as expected. On profile ES2 the fixed function emulation will transform these calls to EnableVertexAttribArray and VertexAttribPointer calls, and a predefined vertex attribute variable name will be chosen. The default name mapping will be used, see GLPointerFuncUtil.getPredefinedArrayIndexName(int).
      Parameters:
      index - The GL array index
      compsPerElement - component count per element
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      initialElementCount -
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
      See Also:
      • com.jogamp.opengl.GLContext#getPredefinedArrayIndexName(int)
    • createGLSL

      public static GLArrayDataServer createGLSL(String name, int compsPerElement, int dataType, boolean normalized, int initialElementCount, int vboUsage) throws GLException
      Create a VBO, using a custom GLSL array attribute name and starting with a new created Buffer object with initialElementCount size
      Parameters:
      name - The custom name for the GL attribute
      compsPerElement - component count per element
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      initialElementCount -
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • createGLSLMapped

      public static GLArrayDataServer createGLSLMapped(String name, int compsPerElement, int dataType, boolean normalized, int mappedElementCount, int vboUsage) throws GLException
      Create a VBO, using a custom GLSL array attribute name intended for GPU buffer storage mapping, see GLBufferStorage, via mapStorage(GL, int) and mapStorage(GL, long, long, int).
      Parameters:
      name - The custom name for the GL attribute
      compsPerElement - component count per element
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      mappedElementCount -
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • createGLSL

      public static GLArrayDataServer createGLSL(String name, int compsPerElement, int dataType, boolean normalized, int stride, Buffer buffer, int vboUsage) throws GLException
      Create a VBO, using a custom GLSL array attribute name and starting with a given Buffer object incl it's stride
      Parameters:
      name - The custom name for the GL attribute
      compsPerElement - component count per element
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      stride - in bytes from one element to the other. If zero, compsPerElement * compSizeInBytes
      buffer - the user define data
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • createData

      public static GLArrayDataServer createData(int compsPerElement, int dataType, int stride, Buffer buffer, int vboUsage, int vboTarget) throws GLException
      Create a VBO data object for any target w/o render pipeline association, ie GL.GL_ELEMENT_ARRAY_BUFFER. Hence no index, name for a fixed function pipeline nor vertex attribute is given.
      Parameters:
      compsPerElement - component count per element
      dataType - The component's OpenGL data type
      stride - in bytes from one element to the other. If zero, compsPerElement * compSizeInBytes
      buffer - the user define data
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      vboTarget - GL.GL_ELEMENT_ARRAY_BUFFER, .. GL.glGenBuffers(int, int[], int)
      Throws:
      GLException
    • createData

      public static GLArrayDataServer createData(int compsPerElement, int dataType, int initialElementCount, int vboUsage, int vboTarget) throws GLException
      Create a VBO data object for any target w/o render pipeline association, ie GL.GL_ELEMENT_ARRAY_BUFFER. Hence no index, name for a fixed function pipeline nor vertex attribute is given.
      Parameters:
      compsPerElement - component count per element
      dataType - The component's OpenGL data type
      initialElementCount -
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      vboTarget - GL.GL_ELEMENT_ARRAY_BUFFER, ..
      Throws:
      GLException
    • createDataMapped

      public static GLArrayDataServer createDataMapped(int compsPerElement, int dataType, int mappedElementCount, int vboUsage, int vboTarget) throws GLException
      Create a VBO data object for any target w/o render pipeline association, i.e. GL.GL_ELEMENT_ARRAY_BUFFER, intended for GPU buffer storage mapping, see GLBufferStorage, via mapStorage(GL, int) and mapStorage(GL, long, long, int).

      No index, name for a fixed function pipeline nor vertex attribute is given.

      Parameters:
      compsPerElement - component count per element
      dataType - The component's OpenGL data type
      initialElementCount -
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      vboTarget - GL.GL_ELEMENT_ARRAY_BUFFER, ..
      Throws:
      GLException
    • createFixedInterleaved

      public static GLArrayDataServer createFixedInterleaved(int compsPerElement, int dataType, boolean normalized, int initialElementCount, int vboUsage) throws GLException
      Create a VBO for fixed function interleaved array data starting with a new created Buffer object with initialElementCount size.

      User needs to configure the interleaved segments via addFixedSubArray(int, int, int).

      Parameters:
      compsPerElement - The total number of all interleaved components per element.
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      initialElementCount - The initial number of all interleaved elements
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • createFixedInterleavedMapped

      public static GLArrayDataServer createFixedInterleavedMapped(int compsPerElement, int dataType, boolean normalized, int mappedElementCount, int vboUsage) throws GLException
      Create a VBO for fixed function interleaved array data intended for GPU buffer storage mapping, see GLBufferStorage, via mapStorage(GL, int) and mapStorage(GL, long, long, int).

      User needs to configure the interleaved segments via addFixedSubArray(int, int, int).

      Parameters:
      compsPerElement - The total number of all interleaved components per element.
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      mappedElementCount - The total number of all interleaved elements
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • createFixedInterleaved

      public static GLArrayDataServer createFixedInterleaved(int compsPerElement, int dataType, boolean normalized, int stride, Buffer buffer, int vboUsage) throws GLException
      Create a VBO for fixed function interleaved array data starting with a given Buffer object incl it's stride

      User needs to configure the interleaved segments via addFixedSubArray(int, int, int).

      Parameters:
      compsPerElement - The total number of all interleaved components per element.
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      stride - in bytes from one element of a sub-array to the other. If zero, compsPerElement * compSizeInBytes
      buffer - The user define data of all interleaved elements
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • addFixedSubArray

      public GLArrayData addFixedSubArray(int index, int comps, int vboTarget)
      Configure a segment of this fixed function interleaved array (see createFixedInterleaved(int, int, boolean, int, int)).

      This method may be called several times as long the sum of interleaved components does not exceed the total component count of the created interleaved array.

      The memory of the the interleaved array is being used.

      Must be called before using the array, eg: GLArrayDataClient.seal(boolean), GLArrayDataClient.putf(float), ..

      Parameters:
      index - The GL array index, maybe -1 if vboTarget is GL.GL_ELEMENT_ARRAY_BUFFER
      comps - This interleaved array segment's component count per element
      vboTarget - GL.GL_ARRAY_BUFFER or GL.GL_ELEMENT_ARRAY_BUFFER
    • createGLSLInterleaved

      public static GLArrayDataServer createGLSLInterleaved(int compsPerElement, int dataType, boolean normalized, int initialElementCount, int vboUsage) throws GLException
      Create a VBO for GLSL interleaved array data starting with a new created Buffer object with initialElementCount size.

      User needs to configure the interleaved segments via #addGLSLSubArray(int, int, int).

      Parameters:
      compsPerElement - The total number of all interleaved components per element.
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      initialElementCount - The initial number of all interleaved elements
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • createGLSLInterleavedMapped

      public static GLArrayDataServer createGLSLInterleavedMapped(int compsPerElement, int dataType, boolean normalized, int mappedElementCount, int vboUsage) throws GLException
      Create a VBO for GLSL interleaved array data intended for GPU buffer storage mapping, see GLBufferStorage, via mapStorage(GL, int) and mapStorage(GL, long, long, int).

      User needs to configure the interleaved segments via #addGLSLSubArray(int, int, int).

      Parameters:
      compsPerElement - The total number of all interleaved components per element.
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      mappedElementCount - The total number of all interleaved elements
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • createGLSLInterleaved

      public static GLArrayDataServer createGLSLInterleaved(int compsPerElement, int dataType, boolean normalized, int stride, Buffer buffer, int vboUsage) throws GLException
      Create a VBO for GLSL interleaved array data starting with a given Buffer object incl it's stride

      User needs to configure the interleaved segments via #addGLSLSubArray(int, int, int).

      Parameters:
      compsPerElement - The total number of all interleaved components per element.
      dataType - The component's OpenGL data type
      normalized - Whether the data shall be normalized
      stride - in bytes from one element of a sub-array to the other. If zero, compsPerElement * compSizeInBytes
      buffer - The user define data of all interleaved elements
      vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
      Throws:
      GLException
    • addGLSLSubArray

      public GLArrayData addGLSLSubArray(String name, int comps, int vboTarget)
      Configure a segment of this GLSL interleaved array (see createGLSLInterleaved(int, int, boolean, int, int)).

      This method may be called several times as long the sum of interleaved components does not exceed the total component count of the created interleaved array.

      The memory of the the interleaved array is being used.

      Must be called before using the array, eg: GLArrayDataClient.seal(boolean), GLArrayDataClient.putf(float), ..

      Parameters:
      name - The custom name for the GL attribute, maybe null if vboTarget is GL.GL_ELEMENT_ARRAY_BUFFER
      comps - This interleaved array segment's component count per element
      vboTarget - GL.GL_ARRAY_BUFFER or GL.GL_ELEMENT_ARRAY_BUFFER
    • setInterleavedOffset

      public final void setInterleavedOffset(int interleavedOffset)
    • getInterleavedOffset

      public final int getInterleavedOffset()
    • destroy

      public void destroy(GL gl)
      Specified by:
      destroy in interface GLArrayData
      Specified by:
      destroy in interface GLArrayDataEditable
      Overrides:
      destroy in class GLArrayDataClient
    • setVBOEnabled

      public void setVBOEnabled(boolean vboUsage)
      Convenient way do disable the VBO behavior and switch to client side data one Only possible if buffer is defined.
      Overrides:
      setVBOEnabled in class GLArrayDataWrapper
      See Also:
    • mapStorage

      public GLBufferStorage mapStorage(GL gl, int access)
    • mapStorage

      public GLBufferStorage mapStorage(GL gl, long offset, long length, int access)
    • unmapStorage

      public void unmapStorage(GL gl)
    • toString

      public String toString()
      Specified by:
      toString in interface GLArrayData
      Overrides:
      toString in class GLArrayDataClient