X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fbuffer.cpp;h=013a136a560a2a5866ee6bf7c343b0102cf9e246;hp=5b3339a1d66721c51d417494ab77f80c6a58d78c;hb=4d146fba83f1ee7b8bd2249648a66db51857730f;hpb=e24dcc10ff0d78203331eabae6b934c9e064105d diff --git a/source/core/buffer.cpp b/source/core/buffer.cpp index 5b3339a1..013a136a 100644 --- a/source/core/buffer.cpp +++ b/source/core/buffer.cpp @@ -148,26 +148,16 @@ BufferRange *Buffer::create_range(unsigned s, unsigned o) void *Buffer::map() { + static Require _req(ARB_map_buffer_range); + allocate(); - if(ARB_map_buffer_range) - { - if(ARB_direct_state_access) - return glMapNamedBufferRange(id, 0, size, GL_MAP_READ_BIT|GL_MAP_WRITE_BIT); - else - { - BindRestore _bind(this, type); - return glMapBufferRange(type, 0, size, GL_MAP_READ_BIT|GL_MAP_WRITE_BIT); - } - } - else if(ARB_direct_state_access) - return glMapNamedBuffer(id, GL_READ_WRITE); - else if(OES_mapbuffer) + if(ARB_direct_state_access) + return glMapNamedBufferRange(id, 0, size, GL_MAP_READ_BIT|GL_MAP_WRITE_BIT); + else { BindRestore _bind(this, type); - return glMapBuffer(type, GL_READ_WRITE); + return glMapBufferRange(type, 0, size, GL_MAP_READ_BIT|GL_MAP_WRITE_BIT); } - else - throw invalid_operation("Buffer::map"); } bool Buffer::unmap()