X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbufferable.h;h=66a6db1871952a2a7e7940bd5f9f931cd88eb808;hp=d7d7e45fe2183fa606395bda73f184a1f3ace282;hb=HEAD;hpb=98cc25ffe956bc162c053c96df659ba40dfe2d6e diff --git a/source/bufferable.h b/source/bufferable.h deleted file mode 100644 index d7d7e45f..00000000 --- a/source/bufferable.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef MSP_GL_BUFFERABLE_H_ -#define MSP_GL_BUFFERABLE_H_ - -namespace Msp { -namespace GL { - -class Buffer; - -/** -Base class for things that can store data in buffers. Supports buffer sharing. -A dirty flag is provided for derived classes. It should be set when the data -in the buffer is considered out of date, and is cleared by Bufferable after -uploading fresh data to the buffer. -*/ -class Bufferable -{ -private: - Buffer *buffer; - unsigned offset; - Bufferable *next_in_buffer; - Bufferable *prev_in_buffer; -protected: - mutable bool dirty; - -protected: - Bufferable(); -public: - virtual ~Bufferable(); - - /** Sets the buffer to use. If prev is not null, it must use the same - buffer, and this object is inserted after it. */ - void use_buffer(Buffer *buf, Bufferable *prev = 0); - - /** Uploads new data into the buffer if necessary. */ - void refresh() const { if(dirty) update_buffer(); } - -private: - void unlink_from_buffer(); - -protected: - /** Returns the buffer in which the data is stored. */ - Buffer *get_buffer() const { return buffer; } - - /** 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; } - - /** Updates the offsets for the chain so that data from different objects - does not overlap. Should be called if either data size or alignment - changes. */ - void update_offset(); - - /** Returns the offset where the data should be uploaded. */ - unsigned get_offset() const { return offset; } - - /** 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; -}; - -} // namespace GL -} // namespace Msp - -#endif