X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuffer.cpp;h=c19f3727f8f5c685a2ab5abc761a0293c3aa7c85;hb=9d2291e3f3c007b1aa7fe66d882a8c1fce8fdee6;hp=51f4873f76274d2f37305ba8bbc3045eb00406a6;hpb=85c82f93f4874bcf0b04332c9abb62cd2a5b181b;p=libs%2Fgl.git diff --git a/source/buffer.cpp b/source/buffer.cpp index 51f4873f..c19f3727 100644 --- a/source/buffer.cpp +++ b/source/buffer.cpp @@ -1,20 +1,19 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - +#include #include "arb_vertex_buffer_object.h" #include "extension.h" #include "buffer.h" +using namespace std; + namespace Msp { namespace GL { +const Buffer *Buffer::bound[4] = { 0, 0, 0, 0 }; + Buffer::Buffer(BufferType t): type(t), - usage(STATIC_DRAW) + usage(STATIC_DRAW), + size(0) { static RequireExtension _req_vbo("GL_ARB_vertex_buffer_object"); if(type==PIXEL_PACK_BUFFER || type==PIXEL_UNPACK_BUFFER) @@ -33,19 +32,20 @@ void Buffer::set_usage(BufferUsage u) usage = u; } -void Buffer::data(unsigned size, const void *d) +void Buffer::data(unsigned sz, const void *d) { const Buffer *old = current(type); bind(); - glBufferDataARB(type, size, d, usage); + glBufferDataARB(type, sz, d, usage); + size = sz; restore(old, type); } -void Buffer::sub_data(unsigned offset, unsigned size, const void *d) +void Buffer::sub_data(unsigned off, unsigned sz, const void *d) { const Buffer *old = current(type); bind(); - glBufferSubDataARB(type, offset, size, d); + glBufferSubDataARB(type, off, sz, d); restore(old, type); } @@ -77,7 +77,7 @@ const Buffer *&Buffer::binding(BufferType type) case ELEMENT_ARRAY_BUFFER: return bound[1]; case PIXEL_PACK_BUFFER: return bound[2]; case PIXEL_UNPACK_BUFFER: return bound[3]; - default: throw InvalidParameterValue("Invalid buffer type"); + default: throw invalid_argument("Buffer::binding"); } } @@ -92,7 +92,5 @@ void Buffer::restore(const Buffer *buf, BufferType type) } } -const Buffer *Buffer::bound[4] = { 0, 0, 0, 0 }; - } // namespace GL } // namespace Msp