how can I store the rectangles I use as pixels?
Я не уверен, что вы правильно настроили базовую настройку.Вы должны использовать большую текстуру, действующую как холст.Любые пользовательские операции рисования должны влиять только на эту текстуру (которую вы будете обновлять с помощью glTexSubImage2D).Затем в каждом кадре вы должны перерисовывать эту текстуру на экране.
Простая система отмены N-шагов будет состоять из кругового списка из N текстур / полотен.