Class GLArrayDataWrapper
- java.lang.Object
-
- com.jogamp.opengl.util.GLArrayDataWrapper
-
- All Implemented Interfaces:
GLArrayData
- Direct Known Subclasses:
GLArrayDataClient
public class GLArrayDataWrapper extends Object implements GLArrayData
-
-
Field Summary
Fields Modifier and Type Field Description static boolean
DEBUG
-
Constructor Summary
Constructors Constructor Description GLArrayDataWrapper(GLArrayDataWrapper src)
Copy Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
associate(Object obj, boolean enable)
Implementation and type dependent object association.int
bytePosition()
Returns the bytes position.static GLArrayDataWrapper
createFixed(int index, int comps, int dataType, boolean normalized, int stride, int mappedElementCount, int vboName, long vboOffset, int vboUsage, int vboTarget)
Create a VBO, using a predefined fixed function array index, wrapping the mapped data characteristics.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, int mappedElementCount, int vboName, long vboOffset, int vboUsage, int vboTarget)
Create a VBO, using a custom GLSL array attribute name, wrapping the mapped data characteristics.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)
int
elemPosition()
Returns the element position.String
elemStatsToString()
Returns a string with detailed buffer element stats, i.e.String
fillStatsToString()
Returns a string with detailed buffer fill stats.Buffer
getBuffer()
The Buffer holding the data, may be null if a GPU buffer without client bound dataClass<?>
getBufferClass()
static Class<?>
getBufferClass(int dataType)
int
getByteCapacity()
Return the capacity in bytes.int
getByteCount()
Returns the byte position (written elements) if notGLArrayData.sealed()
or the byte limit (available to read) afterGLArrayData.sealed()
(flip).int
getBytesPerComp()
The component's size in bytesint
getCompsPerElem()
The number of components per elementint
getCompType()
The component's GL data type, ie.int
getElemCapacity()
Return the element capacity.int
getElemCount()
Returns the element position (written elements) if notGLArrayData.sealed()
or the element limit (available to read) afterGLArrayData.sealed()
(flip).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 determinedString
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
getStride()
int
getVBOName()
The VBO name or 0 if not a VBOlong
getVBOOffset()
The VBO buffer offset or 0 if not a VBOint
getVBOTarget()
The VBO target or 0 if not a VBOint
getVBOUsage()
The VBO usage or 0 if not a VBOboolean
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 pointerint
remainingBytes()
The current number of remaining bytes.int
remainingElems()
The current number of remaining elements.boolean
sealed()
Returns true if data has beensealed
(flipped to read), otherwise false (writing mode).int
setLocation(int v)
Sets the given location of the shader attributeint
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.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.
-
-
-
Constructor Detail
-
GLArrayDataWrapper
public GLArrayDataWrapper(GLArrayDataWrapper src)
Copy ConstructorBuffer is
sliced
, i.e. sharing content but using own state.All other values are simply copied.
-
-
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.This buffer is always
sealed()
.- Parameters:
index
- The GL array indexcomps
- The array component numberdataType
- The array index GL data typenormalized
- Whether the data shall be normalizedstride
-buffer
- the user define datavboName
-vboOffset
-vboUsage
-GL2ES2.GL_STREAM_DRAW
,GL.GL_STATIC_DRAW
orGL.GL_DYNAMIC_DRAW
vboTarget
-GL.GL_ARRAY_BUFFER
orGL.GL_ELEMENT_ARRAY_BUFFER
- Returns:
- the new create instance
- Throws:
GLException
-
createFixed
public static GLArrayDataWrapper createFixed(int index, int comps, int dataType, boolean normalized, int stride, int mappedElementCount, int vboName, long vboOffset, int vboUsage, int vboTarget) throws GLException
Create a VBO, using a predefined fixed function array index, wrapping the mapped data characteristics.This buffer is always
sealed()
.- Parameters:
index
- The GL array indexcomps
- The array component numberdataType
- The array index GL data typenormalized
- Whether the data shall be normalizedstride
-mappedElementCount
-vboName
-vboOffset
-vboUsage
-GL2ES2.GL_STREAM_DRAW
,GL.GL_STATIC_DRAW
orGL.GL_DYNAMIC_DRAW
vboTarget
-GL.GL_ARRAY_BUFFER
orGL.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.This buffer is always
sealed()
.- Parameters:
name
- The custom name for the GL attribute, maybe null if gpuBufferTarget isGL.GL_ELEMENT_ARRAY_BUFFER
comps
- The array component numberdataType
- The array index GL data typenormalized
- Whether the data shall be normalizedstride
-buffer
- the user define datavboName
-vboOffset
-vboUsage
-GL2ES2.GL_STREAM_DRAW
,GL.GL_STATIC_DRAW
orGL.GL_DYNAMIC_DRAW
vboTarget
-GL.GL_ARRAY_BUFFER
orGL.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, int mappedElementCount, int vboName, long vboOffset, int vboUsage, int vboTarget) throws GLException
Create a VBO, using a custom GLSL array attribute name, wrapping the mapped data characteristics.This buffer is always
sealed()
.- Parameters:
name
- The custom name for the GL attribute, maybe null if gpuBufferTarget isGL.GL_ELEMENT_ARRAY_BUFFER
comps
- The array component numberdataType
- The array index GL data typenormalized
- Whether the data shall be normalizedstride
-mappedElementCount
-vboName
-vboOffset
-vboUsage
-GL2ES2.GL_STREAM_DRAW
,GL.GL_STATIC_DRAW
orGL.GL_DYNAMIC_DRAW
vboTarget
-GL.GL_ARRAY_BUFFER
orGL.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 byGLArrayDataClient
andGLArrayDataServer
.GLArrayDataWrapper
does not validate it's instance by itself.- Parameters:
glp
- the GLProfile to usethrowException
- 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 viashaderState.ownAttribute(GLArrayData, boolean)
.- Specified by:
associate
in interfaceGLArrayData
- Parameters:
obj
- implementation and type dependent associationenable
- 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 interfaceGLArrayData
-
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 interfaceGLArrayData
- 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 interfaceGLArrayData
-
setLocation
public final int setLocation(int v)
Description copied from interface:GLArrayData
Sets the given location of the shader attribute- Specified by:
setLocation
in interfaceGLArrayData
- 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 interfaceGLArrayData
- 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 interfaceGLArrayData
- 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 interfaceGLArrayData
-
getVBOOffset
public final long getVBOOffset()
Description copied from interface:GLArrayData
The VBO buffer offset or 0 if not a VBO- Specified by:
getVBOOffset
in interfaceGLArrayData
-
getVBOName
public final int getVBOName()
Description copied from interface:GLArrayData
The VBO name or 0 if not a VBO- Specified by:
getVBOName
in interfaceGLArrayData
-
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 interfaceGLArrayData
-
getVBOUsage
public final int getVBOUsage()
Description copied from interface:GLArrayData
The VBO usage or 0 if not a VBO- Specified by:
getVBOUsage
in interfaceGLArrayData
- Returns:
- 0 if not a GPU buffer, otherwise
GL2ES2.GL_STREAM_DRAW
,GL.GL_STATIC_DRAW
orGL.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 interfaceGLArrayData
- Returns:
- 0 if not a GPU buffer, otherwise
GL.GL_ARRAY_BUFFER
orGL.GL_ELEMENT_ARRAY_BUFFER
-
getBuffer
public 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 interfaceGLArrayData
-
getCompsPerElem
public final int getCompsPerElem()
Description copied from interface:GLArrayData
The number of components per element- Specified by:
getCompsPerElem
in interfaceGLArrayData
-
getCompType
public final int getCompType()
Description copied from interface:GLArrayData
The component's GL data type, ie. GL_FLOAT- Specified by:
getCompType
in interfaceGLArrayData
-
getBytesPerComp
public final int getBytesPerComp()
Description copied from interface:GLArrayData
The component's size in bytes- Specified by:
getBytesPerComp
in interfaceGLArrayData
-
sealed
public final boolean sealed()
Description copied from interface:GLArrayData
Returns true if data has beensealed
(flipped to read), otherwise false (writing mode).- Specified by:
sealed
in interfaceGLArrayData
- See Also:
GLArrayDataEditable.seal(boolean)
,GLArrayDataEditable.seal(GL, boolean)
-
getElemCount
public final int getElemCount()
Description copied from interface:GLArrayData
Returns the element position (written elements) if notGLArrayData.sealed()
or the element limit (available to read) afterGLArrayData.sealed()
(flip).On element consist out of
GLArrayData.getCompsPerElem()
components.- Specified by:
getElemCount
in interfaceGLArrayData
- See Also:
GLArrayData.sealed()
,GLArrayData.getByteCount()
,GLArrayData.elemPosition()
,GLArrayData.remainingElems()
,GLArrayData.getElemCapacity()
-
elemPosition
public final int elemPosition()
Description copied from interface:GLArrayData
Returns the element position.On element consist out of
GLArrayData.getCompsPerElem()
components.- Specified by:
elemPosition
in interfaceGLArrayData
- See Also:
GLArrayData.bytePosition()
,GLArrayData.getElemCount()
,GLArrayData.remainingElems()
,GLArrayData.getElemCapacity()
-
remainingElems
public int remainingElems()
Description copied from interface:GLArrayData
The current number of remaining elements.On element consist out of
Returns the number of elements between the current position and the limit, i.e. remaining elements to write in this buffer.GLArrayData.getCompsPerElem()
components.- Specified by:
remainingElems
in interfaceGLArrayData
- See Also:
GLArrayData.remainingBytes()
,GLArrayData.getElemCount()
,GLArrayData.elemPosition()
,GLArrayData.getElemCapacity()
-
getElemCapacity
public int getElemCapacity()
Description copied from interface:GLArrayData
Return the element capacity.On element consist out of
GLArrayData.getCompsPerElem()
components.- Specified by:
getElemCapacity
in interfaceGLArrayData
- See Also:
GLArrayData.getByteCapacity()
,GLArrayData.getElemCount()
,GLArrayData.elemPosition()
,GLArrayData.remainingElems()
-
getByteCount
public final int getByteCount()
Description copied from interface:GLArrayData
Returns the byte position (written elements) if notGLArrayData.sealed()
or the byte limit (available to read) afterGLArrayData.sealed()
(flip).- Specified by:
getByteCount
in interfaceGLArrayData
- See Also:
GLArrayData.sealed()
,GLArrayData.getElemCount()
,GLArrayData.bytePosition()
,GLArrayData.remainingBytes()
,GLArrayData.getByteCapacity()
-
bytePosition
public final int bytePosition()
Description copied from interface:GLArrayData
Returns the bytes position.- Specified by:
bytePosition
in interfaceGLArrayData
- See Also:
GLArrayData.elemPosition()
,GLArrayData.getByteCount()
,GLArrayData.remainingElems()
,GLArrayData.getElemCapacity()
-
remainingBytes
public int remainingBytes()
Description copied from interface:GLArrayData
The current number of remaining bytes.Returns the number of bytes between the current position and the limit, i.e. remaining bytes to write in this buffer.
- Specified by:
remainingBytes
in interfaceGLArrayData
- See Also:
GLArrayData.remainingElems()
,GLArrayData.getByteCount()
,GLArrayData.bytePosition()
,GLArrayData.getByteCapacity()
-
getByteCapacity
public int getByteCapacity()
Description copied from interface:GLArrayData
Return the capacity in bytes.- Specified by:
getByteCapacity
in interfaceGLArrayData
- See Also:
GLArrayData.getElemCapacity()
,GLArrayData.getByteCount()
,GLArrayData.bytePosition()
,GLArrayData.remainingBytes()
-
fillStatsToString
public String fillStatsToString()
Description copied from interface:GLArrayData
Returns a string with detailed buffer fill stats.- Specified by:
fillStatsToString
in interfaceGLArrayData
-
elemStatsToString
public String elemStatsToString()
Description copied from interface:GLArrayData
Returns a string with detailed buffer element stats, i.e. sealed, count, position, remaining, limit and capacity.- Specified by:
elemStatsToString
in interfaceGLArrayData
-
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 andfalse
for floating point data types.- Specified by:
getNormalized
in interfaceGLArrayData
-
getStride
public final int getStride()
- Specified by:
getStride
in interfaceGLArrayData
- Returns:
- the byte offset between consecutive components
-
getBufferClass
public final Class<?> getBufferClass()
-
destroy
public void destroy(GL gl)
- Specified by:
destroy
in interfaceGLArrayData
-
toString
public String toString()
- Specified by:
toString
in interfaceGLArrayData
- Overrides:
toString
in classObject
-
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 interfaceGLArrayData
- 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
orGL.GL_DYNAMIC_DRAW
-
setVBOTarget
public void setVBOTarget(int vboTarget)
- Parameters:
vboTarget
- eitherGL.GL_ARRAY_BUFFER
orGL.GL_ELEMENT_ARRAY_BUFFER
-
-