public class VertexArray extends java.lang.Object implements VertexData
Convenience class for working with OpenGL vertex arrays. It interleaves all data in the order you specified in the constructor
via VertexAttribute.
This class is not compatible with OpenGL 3+ core profiles. For this VertexBufferObjects are needed.
| Constructor and Description |
|---|
VertexArray(int numVertices,
VertexAttribute... attributes)
Constructs a new interleaved VertexArray
|
VertexArray(int numVertices,
VertexAttributes attributes)
Constructs a new interleaved VertexArray
|
| Modifier and Type | Method and Description |
|---|---|
void |
bind(ShaderProgram shader)
Binds this VertexData for rendering via glDrawArrays or glDrawElements.
|
void |
bind(ShaderProgram shader,
int[] locations)
Binds this VertexData for rendering via glDrawArrays or glDrawElements.
|
void |
dispose()
Disposes this VertexData and all its associated OpenGL resources.
|
VertexAttributes |
getAttributes() |
java.nio.FloatBuffer |
getBuffer()
Returns the underlying FloatBuffer and marks it as dirty, causing the buffer contents to be uploaded on the next call to
bind.
|
int |
getNumMaxVertices() |
int |
getNumVertices() |
void |
invalidate()
Invalidates the VertexData if applicable.
|
void |
setVertices(float[] vertices,
int offset,
int count)
Sets the vertices of this VertexData, discarding the old vertex data.
|
void |
unbind(ShaderProgram shader)
Unbinds this VertexBufferObject.
|
void |
unbind(ShaderProgram shader,
int[] locations)
Unbinds this VertexData.
|
void |
updateVertices(int targetOffset,
float[] vertices,
int sourceOffset,
int count)
Update (a portion of) the vertices.
|
public VertexArray(int numVertices,
VertexAttribute... attributes)
numVertices - the maximum number of verticesattributes - the VertexAttributespublic VertexArray(int numVertices,
VertexAttributes attributes)
numVertices - the maximum number of verticesattributes - the VertexAttributespublic void dispose()
VertexDatadispose in interface VertexDatadispose in interface Disposablepublic java.nio.FloatBuffer getBuffer()
VertexDataVertexData.setVertices(float[], int, int); Any modifications made to the Buffer
*after* the call to bind will not automatically be uploaded.getBuffer in interface VertexDatapublic int getNumVertices()
getNumVertices in interface VertexDatapublic int getNumMaxVertices()
getNumMaxVertices in interface VertexDatapublic void setVertices(float[] vertices,
int offset,
int count)
VertexDataVertexAttributes.
This can be called in between calls to bind and unbind. The vertex data will be updated instantly.
setVertices in interface VertexDatavertices - the vertex dataoffset - the offset to start copying the data fromcount - the number of floats to copypublic void updateVertices(int targetOffset,
float[] vertices,
int sourceOffset,
int count)
VertexDataupdateVertices in interface VertexDatavertices - the vertex datasourceOffset - the offset to start copying the data fromcount - the number of floats to copypublic void bind(ShaderProgram shader)
VertexDatabind in interface VertexDatapublic void bind(ShaderProgram shader, int[] locations)
VertexDatabind in interface VertexDatalocations - array containing the attribute locations.public void unbind(ShaderProgram shader)
unbind in interface VertexDatashader - the shaderpublic void unbind(ShaderProgram shader, int[] locations)
VertexDataunbind in interface VertexDatalocations - array containing the attribute locations.public VertexAttributes getAttributes()
getAttributes in interface VertexDataVertexAttributes as specified during construction.public void invalidate()
VertexDatainvalidate in interface VertexData