OpenGL 3.1 core profile support.
[ipdf/code.git] / src / graphicsbuffer.h
index 15e5b42..7cec235 100644 (file)
@@ -2,14 +2,13 @@
 #define _GRAPHICSBUFFER_H
 
 #include <SDL.h>
-#define GL_GLEXT_PROTOTYPES
-#include <SDL_opengl.h>
+#include "gl_core44.h"
 
 
 namespace IPDF
 {
        /*
-        * The "Screen" class handles managing the OS window (using SDL2).
+        * Implementation of an OpenGL buffer, with some extra cleverness.
         */
        class GraphicsBuffer
        {
@@ -52,15 +51,20 @@ namespace IPDF
                void UploadRange(size_t length, intptr_t offset, const void *data);
 
                void Resize(size_t length);
+               const size_t GetSize() const { return m_buffer_size; }
+
+               void Invalidate();
                
-               void Bind();
+               void Bind() const;
        private:
+               void RecreateBuffer();
                GLuint m_buffer_handle;
                BufferType m_buffer_type;
                BufferUsage m_buffer_usage;
                void *m_map_pointer;
                size_t m_buffer_size;
                bool m_invalidated;
+               bool m_buffer_shape_dirty;
        };
 
 }

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