void* OGLGraphicsBuffer::Map(BufferAccess ba) { GLenum flag = 0; switch (ba) { case BA_Read_Only: flag = GL_READ_ONLY; break; case BA_Write_Only: flag = GL_WRITE_ONLY; break; case BA_Read_Write: flag = GL_READ_WRITE; break; } void* p; if (glloader_GL_EXT_direct_state_access()) { p = glMapNamedBufferEXT(vb_, flag); } else { OGLRenderEngine& re = *checked_cast<OGLRenderEngine*>(&Context::Instance().RenderFactoryInstance().RenderEngineInstance()); re.BindBuffer(target_, vb_); p = glMapBuffer(target_, flag); } return p; }
void* Buffer::map(GLenum access) { if (m_directStateAccess) { void* result = glMapNamedBufferEXT(m_id, access); CheckGLError(); return result; } else { bind(); void* result = glMapBuffer(m_target, access); CheckGLError(); return result; } }
void * BufferImplementation_DirectStateAccessEXT::map(const Buffer * buffer, GLenum access) const { return glMapNamedBufferEXT(buffer->id(), access); }