マトリックスの状態を保存/復元するには、標準のプッシュ/ポップ操作を使用することを知っています。glLineWidth() や glColor4ub() を使用する場合など、状態を保存/復元するための適切な規則を見つけることができませんでした。
何かを描画したいときはいつでも線幅または色を適切に設定する限り、実際には必要ではないようですが、独自の描画関数のどこにいるかの例を見ることができます。線幅を変更する別の描画関数を呼び出します知らず知らずのうちに描き続けていくと、思い通りにならないことがあります。
何をするかわからない関数を呼び出した後に線幅をリセットできることを修正するには、それは洗練されていないように思えます。
私自身のコードでは、すべての描画関数の最初でこれを行っています:
GLfloat savedLineWidth = 1.0f;
glGetFloatv(GL_LINE_WIDTH, &savedLineWidth);
glLineWidth(lineWidth);
そして、次のように描画関数の最後に状態を復元します。
glLineWidth(savedLineWidth);
私が内部を知らないすべての描画機能が素晴らしく、それ自体で状態を復元すると仮定しない限り、それは本当に私には役に立ちません。
その仮定をする必要がありますか?または、何か不足していますか?