public void addTriangles( ArrayList<Triangle> triangles )
	{
		int size = triangles.size();

		this.triangles.addAll( triangles );

		if ( resource.getVbo().capacity() > resource.getVbo().limit() + ( size * 3 * 9 ) )
		{
			FloatBuffer tmpVbo = Utils.createFlippedBuffer( triangles );
			resource.getVbo().limit( tmpVbo.capacity() );
			resource.getVbo().put( tmpVbo );
			resource.getVbo().flip();
			tmpVbo.flip();
			bufferSubData( GL_ARRAY_BUFFER, resource.getVboIndex(), resource.getVbo().limit() * 4, tmpVbo );
		}
		else
		{
			FloatBuffer tmpVbo = BufferUtils.createFloatBuffer( resource.getVbo().limit() + ( size * 3 * 9 ) );
			tmpVbo.put( resource.getVbo() );
			tmpVbo.put( Utils.createFlippedBuffer( triangles ) );
			resource.setVbo( (FloatBuffer) tmpVbo.flip() );
			bufferData( GL_ARRAY_BUFFER, resource.getVboIndex(), resource.getVbo() );

			IntBuffer tmpIbo = BufferUtils.createIntBuffer( resource.getIbo().capacity() + ( size * 3 ) );
			tmpIbo.put( resource.getIbo() );
			tmpIbo.put( Utils.createRegularFlippedBuffer( size * 3, resource.getIbo().capacity() ) );
			resource.setIbo( (IntBuffer) tmpIbo.flip() );
			bufferData( GL_ELEMENT_ARRAY_BUFFER, resource.getIboIndex(), resource.getIbo() );
		}
	}