com.jogamp.opengl.util
Class GLArrayDataWrapper

java.lang.Object
  extended by com.jogamp.opengl.util.GLArrayDataWrapper
All Implemented Interfaces:
GLArrayData
Direct Known Subclasses:
GLArrayDataClient

public class GLArrayDataWrapper
extends Object
implements GLArrayData


Field Summary
static boolean DEBUG
           
 
Method Summary
 void associate(Object obj, boolean enable)
          Implementation and type dependent object association.
static GLArrayDataWrapper createFixed(int index, int comps, int dataType, boolean normalized, int stride, Buffer buffer, int vboName, long vboOffset, int vboUsage, int vboTarget)
          Create a VBO, using a predefined fixed function array index, wrapping the given data.
static GLArrayDataWrapper createGLSL(String name, int comps, int dataType, boolean normalized, int stride, Buffer buffer, int vboName, long vboOffset, int vboUsage, int vboTarget)
          Create a VBO, using a custom GLSL array attribute name, wrapping the given data.
 void destroy(GL gl)
           
 Buffer getBuffer()
          The Buffer holding the data, may be null if a GPU buffer without client bound data
 Class<?> getBufferClass()
           
static Class<?> getBufferClass(int dataType)
           
 int getComponentCount()
          The number of components per element
 int getComponentSizeInBytes()
          The component's size in bytes
 int getComponentType()
          The component's GL data type, ie.
 int getElementCount()
          The current number of used elements.
 int getIndex()
          The index of the predefined array index, see list below, or -1 in case of a shader attribute array.
 int getLocation()
          Returns the shader attribute location for this name, -1 if not yet determined
 String getName()
          The name of the reflecting shader array attribute.
 boolean getNormalized()
          True, if GL shall normalize fixed point data while converting them into float.
 int getSizeInBytes()
          The currently used size in bytes.
In case the buffer's position is 0 (sealed, flipped), it's based on it's limit instead of it's position.
 int getStride()
           
 int getVBOName()
          The VBO name or 0 if not a VBO
 long getVBOOffset()
          The VBO buffer offset or 0 if not a VBO
 int getVBOTarget()
          The VBO target or 0 if not a VBO
 int getVBOUsage()
          The VBO usage or 0 if not a VBO
 boolean isVBO()
          Determines whether the data is server side (VBO) and enabled, or a client side array (false).
 boolean isVertexAttribute()
          Returns true if this data set is intended for a GLSL vertex shader attribute, otherwise false, ie intended for fixed function vertex pointer
 int setLocation(GL2ES2 gl, int program)
          Retrieves the location of the shader attribute from the linked shader program.
 int setLocation(GL2ES2 gl, int program, int location)
          Binds the location of the shader attribute to the given location for the unlinked shader program.
 int setLocation(int v)
          Sets the given location of the shader attribute
 void setName(String newName)
          Set a new name for this array.
 void setVBOEnabled(boolean vboEnabled)
          Enable or disable use of VBO.
 void setVBOName(int vboName)
          Set the VBO buffer name, if valid (!= 0) enable use of VBO, otherwise (==0) disable VBO usage.
 void setVBOTarget(int vboTarget)
           
 void setVBOUsage(int vboUsage)
           
 String toString()
           
 boolean validate(GLProfile glp, boolean throwException)
          Validates this instance's parameter.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEBUG

public static final boolean DEBUG
Method Detail

createFixed

public static GLArrayDataWrapper createFixed(int index,
                                             int comps,
                                             int dataType,
                                             boolean normalized,
                                             int stride,
                                             Buffer buffer,
                                             int vboName,
                                             long vboOffset,
                                             int vboUsage,
                                             int vboTarget)
                                      throws GLException
Create a VBO, using a predefined fixed function array index, wrapping the given data.

Parameters:
index - The GL array index
comps - The array component number
dataType - The array index GL data type
normalized - Whether the data shall be normalized
stride -
buffer - the user define data
vboName -
vboOffset -
vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
vboTarget - GL.GL_ARRAY_BUFFER or GL.GL_ELEMENT_ARRAY_BUFFER
Returns:
the new create instance
Throws:
GLException

createGLSL

public static GLArrayDataWrapper createGLSL(String name,
                                            int comps,
                                            int dataType,
                                            boolean normalized,
                                            int stride,
                                            Buffer buffer,
                                            int vboName,
                                            long vboOffset,
                                            int vboUsage,
                                            int vboTarget)
                                     throws GLException
Create a VBO, using a custom GLSL array attribute name, wrapping the given data.

Parameters:
name - The custom name for the GL attribute, maybe null if gpuBufferTarget is GL.GL_ELEMENT_ARRAY_BUFFER
comps - The array component number
dataType - The array index GL data type
normalized - Whether the data shall be normalized
stride -
buffer - the user define data
vboName -
vboOffset -
vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW
vboTarget - GL.GL_ARRAY_BUFFER or GL.GL_ELEMENT_ARRAY_BUFFER
Returns:
the new create instance
Throws:
GLException

validate

public final boolean validate(GLProfile glp,
                              boolean throwException)
Validates this instance's parameter. Called automatically by GLArrayDataClient and GLArrayDataServer. GLArrayDataWrapper does not validate it's instance by itself.

Parameters:
glp - the GLProfile to use
throwException - whether to throw an exception if this instance has invalid parameter or not
Returns:
true if this instance has invalid parameter, otherwise false

associate

public void associate(Object obj,
                      boolean enable)
Description copied from interface: GLArrayData
Implementation and type dependent object association.

One currently known use case is to associate a ShaderState to an GLSL aware vertex attribute object, allowing to use the ShaderState to handle it's data persistence, location and state change.
This is implicitly done via shaderState.ownAttribute(GLArrayData, boolean).

Specified by:
associate in interface GLArrayData
Parameters:
obj - implementation and type dependent association
enable - pass true to enable the association and false to disable it.

isVertexAttribute

public final boolean isVertexAttribute()
Description copied from interface: GLArrayData
Returns true if this data set is intended for a GLSL vertex shader attribute, otherwise false, ie intended for fixed function vertex pointer

Specified by:
isVertexAttribute in interface GLArrayData

getIndex

public final int getIndex()
Description copied from interface: GLArrayData
The index of the predefined array index, see list below, or -1 in case of a shader attribute array.

Specified by:
getIndex in interface GLArrayData
See Also:
GLPointerFunc.GL_VERTEX_ARRAY, GLPointerFunc.GL_NORMAL_ARRAY, GLPointerFunc.GL_COLOR_ARRAY, GLPointerFunc.GL_TEXTURE_COORD_ARRAY

getLocation

public final int getLocation()
Description copied from interface: GLArrayData
Returns the shader attribute location for this name, -1 if not yet determined

Specified by:
getLocation in interface GLArrayData

setLocation

public final int setLocation(int v)
Description copied from interface: GLArrayData
Sets the given location of the shader attribute

Specified by:
setLocation in interface GLArrayData
Returns:
the given location
See Also:
ShaderState.vertexAttribPointer(GL2ES2, GLArrayData)

setLocation

public final int setLocation(GL2ES2 gl,
                             int program)
Description copied from interface: GLArrayData
Retrieves the location of the shader attribute from the linked shader program.

No validation is performed within the implementation.

Specified by:
setLocation in interface GLArrayData
Returns:
≥0 denotes a valid attribute location as found and used in the given shader program. <0 denotes an invalid location, i.e. not found or used in the given shader program.

setLocation

public final int setLocation(GL2ES2 gl,
                             int program,
                             int location)
Description copied from interface: GLArrayData
Binds the location of the shader attribute to the given location for the unlinked shader program.

No validation is performed within the implementation.

Specified by:
setLocation in interface GLArrayData
Returns:
the given location

getName

public final String getName()
Description copied from interface: GLArrayData
The name of the reflecting shader array attribute.

Specified by:
getName in interface GLArrayData

getVBOOffset

public final long getVBOOffset()
Description copied from interface: GLArrayData
The VBO buffer offset or 0 if not a VBO

Specified by:
getVBOOffset in interface GLArrayData

getVBOName

public final int getVBOName()
Description copied from interface: GLArrayData
The VBO name or 0 if not a VBO

Specified by:
getVBOName in interface GLArrayData

isVBO

public final boolean isVBO()
Description copied from interface: GLArrayData
Determines whether the data is server side (VBO) and enabled, or a client side array (false).

Specified by:
isVBO in interface GLArrayData

getVBOUsage

public final int getVBOUsage()
Description copied from interface: GLArrayData
The VBO usage or 0 if not a VBO

Specified by:
getVBOUsage in interface GLArrayData
Returns:
0 if not a GPU buffer, otherwise GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW

getVBOTarget

public final int getVBOTarget()
Description copied from interface: GLArrayData
The VBO target or 0 if not a VBO

Specified by:
getVBOTarget in interface GLArrayData
Returns:
0 if not a GPU buffer, otherwise GL.GL_ARRAY_BUFFER or GL.GL_ELEMENT_ARRAY_BUFFER

getBuffer

public final Buffer getBuffer()
Description copied from interface: GLArrayData
The Buffer holding the data, may be null if a GPU buffer without client bound data

Specified by:
getBuffer in interface GLArrayData

getComponentCount

public final int getComponentCount()
Description copied from interface: GLArrayData
The number of components per element

Specified by:
getComponentCount in interface GLArrayData

getComponentType

public final int getComponentType()
Description copied from interface: GLArrayData
The component's GL data type, ie. GL_FLOAT

Specified by:
getComponentType in interface GLArrayData

getComponentSizeInBytes

public final int getComponentSizeInBytes()
Description copied from interface: GLArrayData
The component's size in bytes

Specified by:
getComponentSizeInBytes in interface GLArrayData

getElementCount

public final int getElementCount()
Description copied from interface: GLArrayData
The current number of used elements.

On element consist out of GLArrayData.getComponentCount() components.

In case the buffer's position is 0 (sealed, flipped), it's based on it's limit instead of it's position.

Specified by:
getElementCount in interface GLArrayData

getSizeInBytes

public final int getSizeInBytes()
Description copied from interface: GLArrayData
The currently used size in bytes.
In case the buffer's position is 0 (sealed, flipped), it's based on it's limit instead of it's position.

Specified by:
getSizeInBytes in interface GLArrayData

getNormalized

public final boolean getNormalized()
Description copied from interface: GLArrayData
True, if GL shall normalize fixed point data while converting them into float.

Default behavior (of the fixed function pipeline) is true for fixed point data type and false for floating point data types.

Specified by:
getNormalized in interface GLArrayData

getStride

public final int getStride()
Specified by:
getStride in interface GLArrayData
Returns:
the byte offset between consecutive components

getBufferClass

public final Class<?> getBufferClass()

destroy

public void destroy(GL gl)
Specified by:
destroy in interface GLArrayData

toString

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

getBufferClass

public static final Class<?> getBufferClass(int dataType)

setName

public void setName(String newName)
Description copied from interface: GLArrayData
Set a new name for this array.

This clears the location, i.e. sets it to -1.

Specified by:
setName in interface GLArrayData
See Also:
GLArrayData.setLocation(int), GLArrayData.setLocation(GL2ES2, int)

setVBOEnabled

public void setVBOEnabled(boolean vboEnabled)
Enable or disable use of VBO. Only possible if a VBO buffer name is defined.

See Also:
setVBOName(int)

setVBOName

public void setVBOName(int vboName)
Set the VBO buffer name, if valid (!= 0) enable use of VBO, otherwise (==0) disable VBO usage.

See Also:
setVBOEnabled(boolean)

setVBOUsage

public void setVBOUsage(int vboUsage)
Parameters:
vboUsage - GL2ES2.GL_STREAM_DRAW, GL.GL_STATIC_DRAW or GL.GL_DYNAMIC_DRAW

setVBOTarget

public void setVBOTarget(int vboTarget)
Parameters:
vboTarget - either GL.GL_ARRAY_BUFFER or GL.GL_ELEMENT_ARRAY_BUFFER


Copyright 2010 JogAmp Community.