class VertexArray;
/**
-Combines a VertexArray with an index buffer. This wraps OpenGL's vertex array
-objects. Intended for internal use.
+Combines vertex and instance attributes and an index buffer for a complete
+description of vertex input state.
+
+Applications normally don't need to deal with VertexSetups directly. They're
+managed by the Mesh and InstanceArray classes.
*/
class VertexSetup: public VertexSetupBackend
{
DataType index_type = UNSIGNED_SHORT;
public:
+ /** Sets format for vertex data. Instance attributes won't be used. The
+ format cannot be changed once set. */
void set_format(const VertexFormat &);
+
+ /** Sets formats for both vertex and instance data. The formats cannot be
+ changed once set. */
void set_format_instanced(const VertexFormat &, const VertexFormat &);
+ /** Sets the VertexArray to use as the source of vertex attribute values.
+ The array's format must match the VertexSetup's vertex format. */
void set_vertex_array(const VertexArray &);
+
+ /** Sets the VertexArray to use as the source of instance attribute values.
+ An instance format must be defined and the array's format must match it. */
void set_instance_array(const VertexArray &);
+
+ /** Sets the buffer containing index data and the type of indices. */
void set_index_buffer(const Buffer &, DataType);
+
const VertexArray *get_vertex_array() const { return vertex_array; }
const VertexArray *get_instance_array() const { return inst_array; }
const Buffer *get_index_buffer() const { return index_buffer; }