Inflict Qt4 upon the codebase
[ipdf/code.git] / src / graphicsbuffer.h
index 7cec235..4053f90 100644 (file)
@@ -1,13 +1,13 @@
 #ifndef _GRAPHICSBUFFER_H
 #define _GRAPHICSBUFFER_H
 
-#include <SDL.h>
+#include "SDL.h"
 #include "gl_core44.h"
 
 
 namespace IPDF
 {
-       /*
+       /**
         * Implementation of an OpenGL buffer, with some extra cleverness.
         */
        class GraphicsBuffer
@@ -20,7 +20,8 @@ namespace IPDF
                        BufferTypePixelPack,            // Pixel Pack buffer
                        BufferTypePixelUnpack,
                        BufferTypeUniform,              // Uniform/Constant buffer
-                       BufferTypeDrawIndirect,
+                       BufferTypeTexture,              // I was hoping to avoid this one.
+                       BufferTypeDrawIndirect
                };
                
                enum BufferUsage
@@ -39,6 +40,7 @@ namespace IPDF
                GraphicsBuffer();
                ~GraphicsBuffer();
                
+               void SetName(const char *name);
                void SetType(BufferType bufType);
                void SetUsage(BufferUsage bufUsage);
                
@@ -54,10 +56,17 @@ namespace IPDF
                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;
+               void BindRange(size_t start, size_t size) const;
        private:
-               void RecreateBuffer();
+               bool RecreateBuffer(const void *data = NULL);
                GLuint m_buffer_handle;
                BufferType m_buffer_type;
                BufferUsage m_buffer_usage;
@@ -65,6 +74,8 @@ namespace IPDF
                size_t m_buffer_size;
                bool m_invalidated;
                bool m_buffer_shape_dirty;
+               bool m_faking_map;
+               const char *m_name;
        };
 
 }

UCC git Repository :: git.ucc.asn.au