2011-04-26 26 views

回答

3

首先要理解的是:OpenGL只是一个绘图API。您发送绘图命令,它只会更改目标帧缓冲区中某些像素的颜色。 OpenGL中没有高级功能将几何抽象为可操纵的对象。这是场景图的功能。

A 撤销/重做历史要求将所有绘图操作存储在单独的结构中,例如绘图操作的链接列表。

每个新操作都附加到列表中。撤消将通过回退步骤来实施。在一些撤销步骤之后的任何新操作都会丢弃尾部并建立一个新的操作。

在OpenGL方面,您可以在撤销/重做之后重新绘制整个列表,或者为每一步存储帧缓冲区的状态;然而这会占用大量内存,因此仅仅存储差异,并且使用一些简单的压缩方案(游程长度和事先分割成瓦片)来节省内存。

+0

好主意谢谢 – 2011-04-27 03:52:45