0

嗨,我正在制作画笔之类的东西,它可以在其中绘制一些基本形状,glcontrol现在我想添加撤消选项,我真的不知道这将如何工作,所以请给我任何提示

4

1 回答 1

3

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

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

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

在 OpenGL 方面,您可以在撤消/重做之后重绘整个列表,或者为每一步存储帧缓冲区的状态;但是,这会占用大量内存,因此仅存储差异,并使用一些简单的压缩方案(运行长度和预先分割成图块)可以节省内存。

于 2011-04-26T21:59:37.173 回答