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 )
74 vbo = calloc( 1,
sizeof(gl_vbo) );
80 glGenBuffers( 1, &vbo->id );
83 glBindBuffer( target, vbo->id );
84 glBufferData( target, size, data, usage );
85 glBindBuffer( target, 0 );
100void gl_vboData( gl_vbo *vbo, GLsizei size,
const void* data )
108 usage = GL_STREAM_DRAW;
110 usage = GL_DYNAMIC_DRAW;
112 usage = GL_STATIC_DRAW;
114 usage = GL_STREAM_DRAW;
117 glBindBuffer( GL_ARRAY_BUFFER, vbo->id );
118 glBufferData( GL_ARRAY_BUFFER, size, data, usage );
132void gl_vboSubData( gl_vbo *vbo, GLint offset, GLsizei size,
const void* data )
134 glBindBuffer( GL_ARRAY_BUFFER, vbo->id );
135 glBufferSubData( GL_ARRAY_BUFFER, offset, size, data );
149 gl_vbo *vbo =
gl_vboCreate( GL_ARRAY_BUFFER, size, data, GL_STREAM_DRAW );
166 gl_vbo *vbo =
gl_vboCreate( GL_ARRAY_BUFFER, size, data, GL_DYNAMIC_DRAW );
183 gl_vbo *vbo =
gl_vboCreate( GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW );
200 glBindBuffer( GL_ARRAY_BUFFER, vbo->id );
201 return glMapBuffer( GL_ARRAY_BUFFER, GL_WRITE_ONLY );
212 glUnmapBuffer( GL_ARRAY_BUFFER );
229 GLint size, GLenum type, GLsizei stride )
231 const GLvoid *pointer;
234 glBindBuffer( GL_ARRAY_BUFFER, vbo->id );
237 glVertexAttribPointer( index, size, type, GL_FALSE, stride, pointer );
253 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.