/** * @author Edouard DUPIN * * @copyright 2011, Edouard DUPIN, all right reserved * * @license BSD v3 (see license file) */ #include #include #include #include #undef __class__ #define __class__ "resource::VirtualBufferObject" ewol::resource::VirtualBufferObject::VirtualBufferObject(int32_t _number) : m_exist(false) { addObjectType("ewol::VirtualBufferObject"); m_nbVBO = etk_avg(1, _number, NB_VBO_MAX); for (size_t iii=0; iii m_buffer[_id].size()) { return vec3(0,0,0); } return vec3(m_buffer[_id][3*_elementID], m_buffer[_id][3*_elementID+1], m_buffer[_id][3*_elementID+2]); } int32_t ewol::resource::VirtualBufferObject::sizeOnBufferVec3(int32_t _id) { return m_buffer[_id].size()/3; } void ewol::resource::VirtualBufferObject::pushOnBuffer(int32_t _id, const vec2& _data) { m_vboUsed[_id] = true; m_buffer[_id].push_back(_data.x()); m_buffer[_id].push_back(_data.y()); } vec2 ewol::resource::VirtualBufferObject::getOnBufferVec2(int32_t _id, int32_t _elementID) { if ((size_t)_elementID*2 > m_buffer[_id].size()) { return vec2(0,0); } return vec2(m_buffer[_id][2*_elementID], m_buffer[_id][2*_elementID+1]); } int32_t ewol::resource::VirtualBufferObject::sizeOnBufferVec2(int32_t _id) { return m_buffer[_id].size()/2; } ewol::resource::VirtualBufferObject* ewol::resource::VirtualBufferObject::keep(int32_t _number) { // this element create a new one every time .... ewol::resource::VirtualBufferObject* object = new ewol::resource::VirtualBufferObject(_number); if (NULL == object) { EWOL_ERROR("allocation error of a resource : ??VBO??"); return NULL; } getManager().localAdd(object); return object; } void ewol::resource::VirtualBufferObject::release(ewol::resource::VirtualBufferObject*& _object) { if (NULL == _object) { return; } ewol::Resource* object2 = static_cast(_object); getManager().release(object2); _object = NULL; }