Поздний ответ, я знаю, но если кто-нибудь еще натолкнется на это, я все равно отправлю это.
У вас также есть возможность сохранять точки в массиве при каждом вызове touchesBegan и touchesMoved. Как здесь:
[currentStroke addObject:[NSValue valueWithCGPoint:point]];
А когда touchesEnded, вы можете переместить это в другой изменяемый массив, например:
[allPoints addObject:allCurrentStroke];
Затем вы можете перебирать массив allPoints, передавая каждый подрешеток в функцию рендеринга. Этот метод имеет преимущества и недостатки по сравнению с методом хранения изображений. Во-первых, это экономит место на жестком диске ... однако за счет памяти. Используя GL_POINTS, как вы, вы заметите, что потребуется перерисовать ваше изображение после того, как вы нажмете «Отменить» ... однако вы можете легко отменить все до первого касания! Таким образом, это зависит от того, хотите ли вы скорости или гибкости ... Если у кого-то есть лучший способ отменить, пожалуйста, дайте мне знать!