예제 #1
0
	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;
	}
예제 #2
0
파일: Buffer.cpp 프로젝트: voxelinc/glow
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);
}