16#define BUFFER_OFFSET(i) ((char *)(sizeof(char) * (i)))
21typedef enum gl_vboType_e {
41static gl_vbo*
gl_vboCreate( GLenum target, GLsizei size,
const void* data, GLenum usage );
69static gl_vbo*
gl_vboCreate( GLenum target, GLsizei size,
const void* data, GLenum usage )
72 gl_vbo *vbo = calloc( 1,
sizeof(gl_vbo) );
78 glGenBuffers( 1, &vbo->id );
81 glBindBuffer( target, vbo->id );
82 glBufferData( target, size, data, usage );
83 glBindBuffer( target, 0 );
98void gl_vboData( gl_vbo *vbo, GLsizei size,
const void* data )
106 usage = GL_STREAM_DRAW;
108 usage = GL_DYNAMIC_DRAW;
110 usage = GL_STATIC_DRAW;
112 usage = GL_STREAM_DRAW;
115 glBindBuffer( GL_ARRAY_BUFFER, vbo->id );
116 glBufferData( GL_ARRAY_BUFFER, size, data, usage );
130void gl_vboSubData( gl_vbo *vbo, GLint offset, GLsizei size,
const void* data )
132 glBindBuffer( GL_ARRAY_BUFFER, vbo->id );
133 glBufferSubData( GL_ARRAY_BUFFER, offset, size, data );
147 gl_vbo *vbo =
gl_vboCreate( GL_ARRAY_BUFFER, size, data, GL_STREAM_DRAW );
164 gl_vbo *vbo =
gl_vboCreate( GL_ARRAY_BUFFER, size, data, GL_DYNAMIC_DRAW );
181 gl_vbo *vbo =
gl_vboCreate( GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW );
198 glBindBuffer( GL_ARRAY_BUFFER, vbo->id );
199 return glMapBuffer( GL_ARRAY_BUFFER, GL_WRITE_ONLY );
210 glUnmapBuffer( GL_ARRAY_BUFFER );
227 GLint size, GLenum type, GLsizei stride )
229 const GLvoid *pointer;
232 glBindBuffer( GL_ARRAY_BUFFER, vbo->id );
235 glVertexAttribPointer( index, size, type, GL_FALSE, stride, pointer );
251 glDeleteBuffers( 1, &vbo->id );
Header file with generic functions and naev-specifics.
static gl_vbo * gl_vboCreate(GLenum target, GLsizei size, const void *data, GLenum usage)
Creates a VBO.
void gl_vboDestroy(gl_vbo *vbo)
Destroys a VBO.
gl_vbo * gl_vboCreateStream(GLsizei size, const void *data)
Creates a stream vbo.
void gl_vboUnmap(gl_vbo *vbo)
Unmaps a buffer.
int gl_initVBO(void)
Initializes the OpenGL VBO subsystem.
void * gl_vboMap(gl_vbo *vbo)
Maps a buffer.
gl_vbo * gl_vboCreateDynamic(GLsizei size, const void *data)
Creates a dynamic vbo.
void gl_exitVBO(void)
Exits the OpenGL VBO subsystem.
void gl_vboActivateAttribOffset(gl_vbo *vbo, GLuint index, GLuint offset, GLint size, GLenum type, GLsizei stride)
Activates a VBO's offset.
void gl_vboData(gl_vbo *vbo, GLsizei size, const void *data)
Reloads new data or grows the size of the vbo.
void gl_vboSubData(gl_vbo *vbo, GLint offset, GLsizei size, const void *data)
Loads some data into the VBO.
gl_vbo * gl_vboCreateStatic(GLsizei size, const void *data)
Creates a stream vbo.