iphone - 如何在 iPhone 上的 OpenGL ES 绘画应用程序中实现撤消?

标签 iphone opengl-es

我使用 Apple 的示例应用程序 GLPaint 作为 OpenGL ES 绘画应用程序的基础,但我不知道如何在其中实现撤消功能。

我不想拍摄每个笔划的图像并存储它们。有没有办法使用不同的帧缓冲区对象来实现撤消?对于更好的方法,您还有其他建议吗?

最佳答案

使用顶点缓冲区对象 (VBO) 来渲染内容。在每个新笔画中,将最后一个 VBO 复制到最近最少使用 (LRU) 列表。如果您的 LRU 已满,请删除最近最少使用的 VBO。要恢复(撤消)最后一笔,只需使用最近使用的 LRU 的 VBO 并渲染它。

VBO: http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html

最近最少使用: http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used

关于iphone - 如何在 iPhone 上的 OpenGL ES 绘画应用程序中实现撤消?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3474252/

相关文章:

iphone - 我如何使用 NSFetchedResultsController 来获取基于实体关系的结果?

javascript - 自动化测试 performTaskWithPathArgumentsTimeout 在命令行中不起作用?

iphone - 如何为 iPhone 构建不同高度图像的 3 列布局

opengl-es - 如何确保平面完美填充 OpenGL ES 中的视口(viewport)

iphone - 这些矩形是创建为 "struct of arrays"还是 "array of structs"?

iphone - 如何在 iOS 中使用 3-D 纹理?

iphone - iPhone 上的软字幕

iOS Dismiss 和 Present View Controller 自定义动画

iphone - 将 BOOL 值发送到 iOS/iPhone 上的片段着色器 OpenGL ES 2.0

android - 如何增加 Android dumpsys gfxinfo 可以记录的帧数?