- if(size==0)
- throw invalid_operation("Buffer::data");
-
- if(ARB_buffer_storage)
- return sub_data(0, size, d);
-
- if(ARB_direct_state_access)
- glNamedBufferData(id, size, d, STATIC_DRAW);
- else
- {
- bind_scratch();
- glBufferData(GL_ARRAY_BUFFER, size, d, STATIC_DRAW);
- }
-
- allocated = true;
+ check_sub_data(off, sz, "Buffer::sub_data");
+ BufferBackend::sub_data(off, sz, d);