共用方式為


儲存和還原狀態變數集

您可以使用 glPushAttrib 和 glPopAttrib 函式,儲存和還原屬性堆疊上狀態變數集合的值。 屬性堆疊的深度至少為16。 若要取得實際深度,請使用 GL_MAX_ATTRIB_STACK_DEPTH 搭配 glGetIntegerv 推送完整堆疊或彈出空白堆疊會產生錯誤。

使用 glPushAttrib 和 glPopAttrib 通常比自行取得和還原值更快。 某些值可能會在硬體中推送並彈出,而儲存和還原這些值可能會耗用大量資源。 此外,如果您要在遠端用戶端上作業,則所有屬性數據都必須在儲存和還原時,透過網路連線傳輸並返回。 不過,您的OpenGL實作會保留伺服器上的屬性堆疊,以避免不必要的網路延遲。

glPushAttrib原型為:

void glPushAttribGLbitfield mask ):

使用 glPushAttrib 會藉由將位推送至屬性堆疊來儲存遮罩中位所指示的所有屬性。 如需您可以邏輯方式或一起儲存任何屬性組合的可能遮罩位清單,請參閱 屬性群組。 每個位都會對應至個別狀態變數的集合。 例如,GL_LIGHTING_BIT是指與光源相關的所有狀態變數,其中包括目前的材質色彩;環境、擴散、反射和發出光線:已啟用的燈光清單;和聚光燈的方向。 當您呼叫 glPopAttrib 時,會還原所有這些變數。 若要確切找出特定遮罩值儲存的屬性,請參閱 OpenGL 狀態變數