OpenGL is a state machine, especially a pipeline that uses fixed functions. You can set its various statuses (or modes) and keep these statuses effective until they are modified again.
Each state variable (or mode) has a default value. You can query the current value of each state variable from the system at any time. Generally, you can use glgetbooleanv (), glgetdoublev(), glgetintegerv (), glgetfloatv (), glgetpointerv (), or glisenabled () to complete this task. The selected function depends on the Data Type of the returned result.
Some status variables also have more specific query functions, such as glgetlight * (), glgeterror (), or glgetpolygonstipple.
You can also use the glpushattrib () and glpushclientattrib () functions to save the state variable set to an attribute stack and make temporary modifications to them. Then, use glpopattrirb () or glpopclientattrib () restore these values. If you need to temporarily modify the object variables, you should use these functions.