私は OpenGL ES の周りに単純な OOP ラッパーを書いています。render- と framebuffer を書きながら、それを操作するためにバッファをバインドする必要があります:
- (void) setupSomething
{
…
glBindRenderbufferOES(GL_RENDERBUFFER_OES, myBufferID);
…
}
このセットアップ コードが、既に別のレンダー バッファーがバインドされているコンテキストで呼び出された場合はどうなるでしょうか。上記の私の単純なバージョンでは、現在のバッファを切り替えるという厄介な副作用があり、非常に脆弱に聞こえます。私はコードをもっと防御的に書くべきだと考えました:
- (void) setupSomething
{
// Store current state
GLint previousRenderBuffer = 0;
glGetIntegerv(GL_RENDERBUFFER_BINDING_OES, &previousRenderBuffer);
// Do whatever I want to do
glBindRenderbufferOES(GL_RENDERBUFFER_OES, myBufferID);
…
// Restore previous state
glBindRenderbufferOES(GL_RENDERBUFFER_OES, previousRenderBuffer);
}
私の質問は次のとおりです:このように前の状態を保存することは本当に必要/賢明/慣習glPushSomething
ですか?