X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fvertexbuffer.cpp;h=e3680811dd9a8ccb59e1fb0e0b1f5b84b53ac6e3;hb=a4ec5410595ddf37bfbc0e85ad87d31a9cbf94f1;hp=c10dec40cc68cb551d538297f9ec115d5bb5b857;hpb=f098a871fc6dc7b61a5aca5581fa327e4124c036;p=libs%2Fgl.git diff --git a/source/vertexbuffer.cpp b/source/vertexbuffer.cpp index c10dec40..e3680811 100644 --- a/source/vertexbuffer.cpp +++ b/source/vertexbuffer.cpp @@ -5,10 +5,8 @@ Copyright © 2007 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ -#define GL_GLEXT_PROTOTYPES -#include -//XXX gl.h seems to include glext.h, but can I rely on this? -//#include +#include "arb_vertex_buffer_object.h" +#include "extension.h" #include "vertexbuffer.h" namespace Msp { @@ -16,12 +14,14 @@ namespace GL { VertexBuffer::VertexBuffer() { - glGenBuffers(1, &id); + require_extension("GL_ARB_vertex_buffer_object"); + + glGenBuffersARB(1, &id); } void VertexBuffer::bind() const { - glBindBuffer(GL_ARRAY_BUFFER, id); + glBindBufferARB(GL_ARRAY_BUFFER, id); bound=this; } @@ -29,12 +29,21 @@ void VertexBuffer::data(sizei size, void *d) { if(bound!=this) bind(); - glBufferData(GL_ARRAY_BUFFER, size, d, GL_STATIC_DRAW); + glBufferDataARB(GL_ARRAY_BUFFER, size, d, GL_STATIC_DRAW); } VertexBuffer::~VertexBuffer() { - glDeleteBuffers(1, &id); + glDeleteBuffersARB(1, &id); +} + +void VertexBuffer::unbind() +{ + if(bound) + { + glBindBufferARB(GL_ARRAY_BUFFER, 0); + bound=0; + } } const VertexBuffer *VertexBuffer::bound=0;