- Timestamp:
- 07/05/13 09:39:09 (12 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/nv/gfx/texture_atlas.hh
r142 r145 29 29 void merge(); 30 30 private: 31 size_t m_used; 31 size_t m_used; 32 size_t m_border; 32 33 std::vector<ivec3> m_nodes; 33 34 }; -
trunk/src/gfx/texture_atlas.cc
r144 r145 13 13 14 14 texture_atlas::texture_atlas( glm::ivec2 size, size_t depth, size_t border /*= 1*/ ) 15 : image( size, depth ), m_used( 0 ) 15 : image( size, depth ), m_used( 0 ), m_border( border ) 16 16 { 17 m_nodes.push_back( glm::ivec3( border, border, m_size.x - 2 *border ) );17 m_nodes.push_back( glm::ivec3( m_border, m_border, m_size.x - 2 * m_border ) ); 18 18 fill( 0 ); 19 19 } … … 30 30 { 31 31 int y = fit( i, size ); 32 if ( y >= 0 )32 if ( y >= 0 ) 33 33 { 34 34 glm::ivec3 node = m_nodes[ i ]; … … 57 57 glm::ivec3 prev = m_nodes[ i-1 ]; 58 58 59 if ( node.x < (prev.x + prev.z))59 if ( node.x < prev.x + prev.z ) 60 60 { 61 61 int shrink = prev.x + prev.z - node.x; … … 63 63 m_nodes[ i ].z -= shrink; 64 64 65 if ( m_nodes[ i ].z <= 0)65 if ( m_nodes[ i ].z <= 0 ) 66 66 { 67 67 m_nodes.erase( m_nodes.begin() + static_cast<int>(i) ); … … 87 87 glm::ivec3 node = m_nodes[ index ]; 88 88 89 if ( ( node.x + size.x ) > ( m_size.x ))89 if ( node.x + size.x > m_size.x - m_border ) 90 90 { 91 91 return -1; … … 95 95 int wleft = size.x; 96 96 97 while ( wleft > 0 )97 while ( wleft > 0 ) 98 98 { 99 99 node = m_nodes[ index ]; 100 if ( node.y > y )100 if ( node.y > y ) 101 101 { 102 102 y = node.y; 103 103 } 104 if ( (y + size.y) > ( m_size.y ))104 if ( y + size.y > m_size.y - m_border ) 105 105 { 106 106 return -1; … … 114 114 void texture_atlas::merge() 115 115 { 116 for ( size_t i=0; i < m_nodes.size()-1; ++i )116 for ( size_t i=0; i < m_nodes.size()-1; ++i ) 117 117 { 118 if ( m_nodes[ i ].y == m_nodes[ i+1 ].y )118 if ( m_nodes[ i ].y == m_nodes[ i+1 ].y ) 119 119 { 120 120 m_nodes[ i ].z += m_nodes[ i+1 ].z;
Note: See TracChangeset
for help on using the changeset viewer.