namespace IPDF
{
- /*
+ /**
* Implementation of an OpenGL buffer, with some extra cleverness.
*/
class GraphicsBuffer
BufferTypePixelPack, // Pixel Pack buffer
BufferTypePixelUnpack,
BufferTypeUniform, // Uniform/Constant buffer
- BufferTypeDrawIndirect,
+ BufferTypeTexture, // I was hoping to avoid this one.
+ BufferTypeDrawIndirect
};
enum BufferUsage
const size_t GetSize() const { return m_buffer_size; }
void Invalidate();
+
+ // WARNING: The buffer handle can change for (almost) no reason.
+ // If you do _anything_ to the buffer, you'll need to call this
+ // again to see if we've recreated it in a vain attempt to outsmart
+ // the driver.
+ GLuint GetHandle() const { return m_buffer_handle; }
void Bind() const;
private:
- bool RecreateBuffer(const void *data = nullptr);
+ bool RecreateBuffer(const void *data = NULL);
GLuint m_buffer_handle;
BufferType m_buffer_type;
BufferUsage m_buffer_usage;