com.jogamp.opengl.util

## Class GLArrayDataServer

- java.lang.Object
- - com.jogamp.opengl.util.GLArrayDataWrapper
  - - com.jogamp.opengl.util.GLArrayDataClient
    - - com.jogamp.opengl.util.GLArrayDataServer

- All Implemented Interfaces:
    GLArrayDataEditable, GLArrayData

      public class GLArrayDataServer
      extends GLArrayDataClient
      implements GLArrayDataEditable

- - ### Field Summary

    - ### Fields inherited from class com.jogamp.opengl.util.GLArrayDataWrapper

      `DEBUG`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GLArrayDataServer(GLArrayDataServer src)` Copy Constructor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `GLArrayData` | `addFixedSubArray(int index, int comps, int vboTarget)` Configure a segment of this fixed function interleaved array (see `createFixedInterleaved(int, int, boolean, int, int)`).
    `GLArrayData` | `addGLSLSubArray(String name, int comps, int vboTarget)` Configure a segment of this GLSL interleaved array (see `createGLSLInterleaved(int, int, boolean, int, int)`).
    `static GLArrayDataServer` | `createData(int compsPerElement, int dataType, int stride, Buffer buffer, int vboUsage, int vboTarget)` Create a VBO data object for any target w/o render pipeline association, ie `GL.GL_ELEMENT_ARRAY_BUFFER`.
    `static GLArrayDataServer` | `createData(int compsPerElement, int dataType, int initialElementCount, int vboUsage, int vboTarget)` Create a VBO data object for any target w/o render pipeline association, ie `GL.GL_ELEMENT_ARRAY_BUFFER`.
    `static GLArrayDataServer` | `createDataMapped(int compsPerElement, int dataType, int mappedElementCount, int vboUsage, int vboTarget)` Create a VBO data object for any target w/o render pipeline association, i.e.
    `static GLArrayDataServer` | `createFixed(int index, int compsPerElement, int dataType, boolean normalized, int stride, Buffer buffer, int vboUsage)` 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.
    `static GLArrayDataServer` | `createFixed(int index, int compsPerElement, int dataType, boolean normalized, int initialElementCount, int vboUsage)` 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.
    `static GLArrayDataServer` | `createFixedInterleaved(int compsPerElement, int dataType, boolean normalized, int stride, Buffer buffer, int vboUsage)` Create a VBO for fixed function interleaved array data starting with a given Buffer object incl it's stride
    `static GLArrayDataServer` | `createFixedInterleaved(int compsPerElement, int dataType, boolean normalized, int initialElementCount, int vboUsage)` Create a VBO for fixed function interleaved array data starting with a new created Buffer object with initialElementCount size.
    `static GLArrayDataServer` | `createFixedInterleavedMapped(int compsPerElement, int dataType, boolean normalized, int mappedElementCount, int vboUsage)` 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)`.
    `static GLArrayDataServer` | `createGLSL(String name, int compsPerElement, int dataType, boolean normalized, int stride, Buffer buffer, int vboUsage)` Create a VBO, using a custom GLSL array attribute name and starting with a given Buffer object incl it's stride
    `static GLArrayDataServer` | `createGLSL(String name, int compsPerElement, int dataType, boolean normalized, int initialElementCount, int vboUsage)` Create a VBO, using a custom GLSL array attribute name and starting with a new created Buffer object with initialElementCount size
    `static GLArrayDataServer` | `createGLSLInterleaved(int compsPerElement, int dataType, boolean normalized, int stride, Buffer buffer, int vboUsage)` Create a VBO for GLSL interleaved array data starting with a given Buffer object incl it's stride
    `static GLArrayDataServer` | `createGLSLInterleaved(int compsPerElement, int dataType, boolean normalized, int initialElementCount, int vboUsage)` Create a VBO for GLSL interleaved array data starting with a new created Buffer object with initialElementCount size.
    `static GLArrayDataServer` | `createGLSLInterleavedMapped(int compsPerElement, int dataType, boolean normalized, int mappedElementCount, int vboUsage)` 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)`.
    `static GLArrayDataServer` | `createGLSLMapped(String name, int compsPerElement, int dataType, boolean normalized, int mappedElementCount, int vboUsage)` 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)`.
    `void` | `destroy(GL gl)`
    `int` | `getInterleavedOffset()`
    `GLBufferStorage` | `mapStorage(GL gl, int access)`
    `GLBufferStorage` | `mapStorage(GL gl, long offset, long length, int access)`
    `void` | `setInterleavedOffset(int interleavedOffset)`
    `void` | `setVBOEnabled(boolean vboUsage)` Convenient way do disable the VBO behavior and switch to client side data one Only possible if buffer is defined.
    `String` | `toString()`
    `void` | `unmapStorage(GL gl)`

    - ### Methods inherited from class com.jogamp.opengl.util.GLArrayDataClient

      `associate, bindBuffer, createFixed, createFixed, createGLSL, createGLSL, enableBuffer, enabled, isVBOWritten, padding, put, putb, putf, puti, puts, putx, reset, reset, rewind, seal, seal, sealed, setEnableAlways, setVBOWritten`

    - ### Methods inherited from class com.jogamp.opengl.util.GLArrayDataWrapper

      `createFixed, createFixed, createGLSL, createGLSL, getBuffer, getBufferClass, getBufferClass, getComponentCount, getComponentSizeInBytes, getComponentType, getElementCount, getIndex, getLocation, getName, getNormalized, getSizeInBytes, getStride, getVBOName, getVBOOffset, getVBOTarget, getVBOUsage, isVBO, isVertexAttribute, setLocation, setLocation, setLocation, setName, setVBOName, setVBOTarget, setVBOUsage, validate`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface com.jogamp.opengl.util.GLArrayDataEditable

      `bindBuffer, enableBuffer, enabled, isVBOWritten, padding, put, putb, putf, puti, puts, putx, reset, reset, rewind, seal, seal, sealed, setEnableAlways, setVBOWritten`

    - ### Methods inherited from interface javax.media.opengl.GLArrayData

      `associate, getBuffer, getComponentCount, getComponentSizeInBytes, getComponentType, getElementCount, getIndex, getLocation, getName, getNormalized, getSizeInBytes, getStride, getVBOName, getVBOOffset, getVBOTarget, getVBOUsage, isVBO, isVertexAttribute, setLocation, setLocation, setLocation, setName`

- - ### Constructor Detail

    - #### 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 Detail

    - #### 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:
        `javax.media.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:
        `javax.media.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`, .. {@link 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 `GLArrayDataEditable`
      Specified by:
        `destroy` in interface `GLArrayData`
      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:
        `GLArrayDataWrapper.setVBOName(int)`

    - #### 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`

Copyright 2010 JogAmp Community.