+static GLenum BufferUsageToGLUsage(GraphicsBuffer::BufferUsage buffer_usage)
+{
+ GLenum usage;
+ switch (buffer_usage)
+ {
+ case GraphicsBuffer::BufferUsageStaticDraw:
+ usage = GL_STATIC_DRAW;
+ break;
+ case GraphicsBuffer::BufferUsageStaticRead:
+ usage = GL_STATIC_READ;
+ break;
+ case GraphicsBuffer::BufferUsageStaticCopy:
+ usage = GL_STATIC_COPY;
+ break;
+ case GraphicsBuffer::BufferUsageDynamicDraw:
+ usage = GL_DYNAMIC_DRAW;
+ break;
+ case GraphicsBuffer::BufferUsageDynamicRead:
+ usage = GL_DYNAMIC_READ;
+ break;
+ case GraphicsBuffer::BufferUsageDynamicCopy:
+ usage = GL_DYNAMIC_COPY;
+ break;
+ case GraphicsBuffer::BufferUsageStreamDraw:
+ usage = GL_STREAM_DRAW;
+ break;
+ case GraphicsBuffer::BufferUsageStreamRead:
+ usage = GL_STREAM_READ;
+ break;
+ case GraphicsBuffer::BufferUsageStreamCopy:
+ usage = GL_STREAM_COPY;
+ break;
+ default:
+ SDL_assert(false && "Unknown buffer usage type."); //WTF?
+ usage = GL_DYNAMIC_DRAW;
+ }
+ return usage;
+}
+
+static GLenum BufferTypeToGLType(GraphicsBuffer::BufferType buffer_type)
+{
+ switch (buffer_type)
+ {
+ case GraphicsBuffer::BufferTypeVertex:
+ return GL_ARRAY_BUFFER;
+ case GraphicsBuffer::BufferTypeIndex:
+ return GL_ELEMENT_ARRAY_BUFFER;
+ case GraphicsBuffer::BufferTypePixelPack:
+ return GL_PIXEL_PACK_BUFFER;
+ case GraphicsBuffer::BufferTypePixelUnpack:
+ return GL_PIXEL_UNPACK_BUFFER;
+ case GraphicsBuffer::BufferTypeUniform:
+ return GL_UNIFORM_BUFFER;
+ case GraphicsBuffer::BufferTypeTexture:
+ return GL_TEXTURE_BUFFER;
+ case GraphicsBuffer::BufferTypeDrawIndirect:
+ return GL_DRAW_INDIRECT_BUFFER;
+ default:
+ return GL_COPY_READ_BUFFER;
+ }
+}
+