class VertexArray
{
- friend class VertexArrayBuilder;
-
public:
class Loader: public DataFile::Loader, public VertexArrayBuilder
{
unsigned size() const { return data.size()/stride; }
void clear();
void reset(VertexFormat);
- RefPtr<VertexArrayBuilder> modify();
void apply() const;
void update_data();
+ float *append();
+ float *operator[](unsigned i) { return &data[0]+i*stride; }
+ const float *operator[](unsigned i) const { return &data[0]+i*stride; }
private:
void set_array(unsigned, unsigned, unsigned) const;
static unsigned enabled_arrays;
};
+void array_element(int);
+void draw_arrays(PrimitiveType, int, sizei);
+void draw_elements(PrimitiveType, sizei, DataType, const void *);
+void draw_range_elements(PrimitiveType, uint, uint, sizei, DataType, const void *);
+
+inline void draw_elements(PrimitiveType mode, sizei count, const unsigned *indices)
+{ draw_elements(mode, count, UNSIGNED_INT, indices); }
+
+inline void draw_elements(PrimitiveType mode, sizei count, const unsigned short *indices)
+{ draw_elements(mode, count, UNSIGNED_SHORT, indices); }
+
+inline void draw_range_elements(PrimitiveType mode, uint low, uint high, sizei count, const unsigned short *indices)
+{ draw_range_elements(mode, low, high, count, UNSIGNED_SHORT, indices); }
+
+inline void draw_range_elements(PrimitiveType mode, uint low, uint high, sizei count, const unsigned *indices)
+{ draw_range_elements(mode, low, high, count, UNSIGNED_INT, indices); }
+
} // namespace GL
} // namespace Msp