Adds an attribute to a buffer, or replaces a previously added attribute with the same name.
Use the CoglPrimitive
api instead
You either can use one of the built-in names such as "gl_Vertex", or "gl_MultiTexCoord0" to add standard attributes, like positions, colors and normals, or you can add custom attributes for use in shaders.
The number of vertices declared when calling VertexBuffer
determines how many attribute values will be read from the supplied pointer
.
The data for your attribute isn't copied anywhere until you call submit, or issue a draw call which automatically submits pending attribute changes. so the supplied pointer must remain valid until then. If you are updating an existing attribute (done by re-adding it) then you still need to re-call submit to commit the changes to the GPU. Be carefull to minimize the number of calls to submit, though.
If you are interleving attributes it is assumed that each interleaved attribute starts no farther than +- stride bytes from the other attributes it is interleved with. I.e. this is ok:
|-0-0-0-0-0-0-0-0-0-0|
This is not ok:
|- - - - -0-0-0-0-0-0 0 0 0 0|
(Though you can have multiple groups of interleved attributes)
attribute_name | |
n_components |
The number of components per attribute and must be 1, 2, 3 or 4 |
type |
a AttributeType specifying the data type of each component. |
normalized |
If |
stride |
This specifies the number of bytes from the start of one attribute value to the start of the next value (for the same attribute). So, for example, with a position interleved with color like this: XYRGBAXYRGBAXYRGBA, then if each letter represents a byte, the stride for both attributes is 6. The special value 0 means the values are stored sequentially in memory. |
pointer |
This addresses the first attribute in the vertex array. This must remain valid until you either call submit or issue a draw call. |
handle |
A vertex buffer handle |