private void bufferData(int vboHandle, GUIComponentGroup components, boolean bufferVertexData, boolean bufferTextureCoordsData, boolean bufferColorData) {
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboHandle);

        if (bufferVertexData) {
            IntBuffer buffer = BufferUtils.createIntBuffer(components.getGroupVertexBufferSize() / VertexData.BYTES_PER_DATUM);
            components.putVertexData(buffer);
            buffer.flip();
            GL15.glBufferSubData(GL15.GL_ARRAY_BUFFER, components.getVertexBufferGlobalOffset(), buffer);
        }

        if (bufferTextureCoordsData) {
            ShortBuffer buffer = BufferUtils.createShortBuffer(components.getGroupTextureCoordsBufferSize() / TextureCoordsData.BYTES_PER_DATUM);
            components.putTextureCoordsData(buffer);
            buffer.flip();
            GL15.glBufferSubData(GL15.GL_ARRAY_BUFFER, components.getTextureCoordsBufferGlobalOffset(), buffer);
        }

        if (bufferColorData) {
            ByteBuffer buffer = BufferUtils.createByteBuffer(components.getGroupColorBufferSize() / ColorData.BYTES_PER_DATUM);
            components.putColorData(buffer);
            buffer.flip();
            GL15.glBufferSubData(GL15.GL_ARRAY_BUFFER, components.getColorBufferGlobalOffset(), buffer);
        }

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    }