OpenGL ES Simple Undo Последний чертеж - PullRequest
1 голос
/ 25 апреля 2010

Я пытаюсь выяснить, как реализовать простую «отмену» последнего действия рисования на экране iPhone. Я рисую, сначала подготовив буфер кадра:

[EAGLContext setCurrentContext:context];
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);

Затем я подготавливаю массив вершин и рисую так:

glVertexPointer(2, GL_FLOAT, 0, vertexBuffer);
glDrawArrays(GL_POINTS, 0, vertexCount);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];

Как мне просто отменить это последнее действие? Я думаю, должен быть способ сохранить предыдущее состояние или встроенную функцию OpenGL ES.

Спасибо

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Поздний ответ, я знаю, но если кто-нибудь еще натолкнется на это, я все равно отправлю это.

У вас также есть возможность сохранять точки в массиве при каждом вызове touchesBegan и touchesMoved. Как здесь:

[currentStroke addObject:[NSValue valueWithCGPoint:point]];

А когда touchesEnded, вы можете переместить это в другой изменяемый массив, например:

[allPoints addObject:allCurrentStroke];

Затем вы можете перебирать массив allPoints, передавая каждый подрешеток в функцию рендеринга. Этот метод имеет преимущества и недостатки по сравнению с методом хранения изображений. Во-первых, это экономит место на жестком диске ... однако за счет памяти. Используя GL_POINTS, как вы, вы заметите, что потребуется перерисовать ваше изображение после того, как вы нажмете «Отменить» ... однако вы можете легко отменить все до первого касания! Таким образом, это зависит от того, хотите ли вы скорости или гибкости ... Если у кого-то есть лучший способ отменить, пожалуйста, дайте мне знать!

0 голосов
/ 04 июня 2010

Вы можете получать изображение из контекста OpenGL ES каждый раз, когда рисуете что-то, и сохранять его в комплекте приложения в виде файла изображения. Это экономит оперативную память приложения.

При нажатии отмены вы просто рисуете предыдущее сохраненное изображение в контекст и все.

Как получить изображение из контекста вы можете найти здесь: http://www.iphonedevsdk.com/forum/iphone-sdk-development/35281-grab-image-opengl-es-context.html

...