在OpenGL中,经常会这样写代码:glPushMatrix();//modifythecurrentmatrixanduseitglPopMatrix();本质上是改变状态,然后执行一些使用新状态的Action,最后恢复状态。现在这里有两个问题:很容易忘记恢复状态。如果中间的代码抛出异常,则状态永远不会恢复。在真正的基于对象的编程风格中,我编写了一些实用程序类来克服这些问题,如下所示:structWithPushedMatrix{WithPushedMatrix(){glPushMatrix();}~WithPushedMatrix(){glPopMatrix();}};现在我可以像
在OpenGL中,经常会这样写代码:glPushMatrix();//modifythecurrentmatrixanduseitglPopMatrix();本质上是改变状态,然后执行一些使用新状态的Action,最后恢复状态。现在这里有两个问题:很容易忘记恢复状态。如果中间的代码抛出异常,则状态永远不会恢复。在真正的基于对象的编程风格中,我编写了一些实用程序类来克服这些问题,如下所示:structWithPushedMatrix{WithPushedMatrix(){glPushMatrix();}~WithPushedMatrix(){glPopMatrix();}};现在我可以像