一 关于堆栈的理解
可以理解成机枪的弹夹,弹夹就是一个栈,子弹一颗一颗压进去,就是压栈,有个顺序特点就是先进后出,后进先出,出栈就是子弹装号了一颗一颗打出来,栈的清理就是把弹夹清空,清掉弹夹里的子弹。堆栈就是把子弹放到弹夹里,堆在那里了,实际意思都差不多。![出栈入栈示意图.png](https://upload-images.jianshu.io/upload_images/9278567-4cd8e4548d6f5904.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
二 OpenGL压栈、出栈
``` void GLMatrixStack::PushMatrix(void);//将当前矩阵压入堆栈(栈顶矩阵copy一份到栈顶)
//注:copy一份的作用是快速恢复。对复制的那一份随意操作之后进行出栈操作移除就好了。
void PushMatrix(const M3dMatrix44f mMatrix);//将GLFame对象压入矩阵对象
void GLMatrixStack::PopMatrix(void);//出栈(出栈指的是移除顶部的矩阵对象)
```
https://www.jianshu.com/p/ce3b51b8f168
具体参考大拿同学的文章。
参考:https://baike.baidu.com/item/栈/12808149?fr=aladdin