com.jogamp.opengl.util
Class GLArrayDataServer

java.lang.Object
  extended by com.jogamp.opengl.util.GLArrayDataWrapper
      extended by com.jogamp.opengl.util.GLArrayDataClient
          extended by 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
GLArrayDataServer(GLArrayDataServer src)
          Copy Constructor
 
Method Summary
 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.