/** Returns the amount of data to be stored in the buffer, in bytes. */
virtual unsigned get_data_size() const = 0;
+ /** Returns a pointer to the start of data in client memory. */
+ virtual const void *get_data_pointer() const = 0;
+
/** Returns the alignment required for the data, in bytes. The offset is
guaranteed to be a multiple of this. */
virtual unsigned get_alignment() const { return 1; }
/** Called when the offset for the data has changed. */
virtual void offset_changed() { }
+private:
+ bool resize_buffer() const;
+
+protected:
/** Resizes the buffer if necessary and calls upload_data(). */
void update_buffer() const;
/** Uploads data to the buffer. */
- virtual void upload_data() const = 0;
+ virtual void upload_data() const;
};
} // namespace GL