Desidero scrivere una funzione di utilità generica che utilizzerà un oggetto FrameBuffer OpenGL per creare una trama che può essere utilizzata da qualche programma OpenGL per qualsiasi scopo che un programmatore di terze parti vorrebbe.Ripristino stato OpenGL
consente di dire per la quota argomento della funzione appare come
void createSpecialTexture(GLuint textureID)
{
MyOpenGLState state;
saveOpenGLState(state);
setStateToDefault();
doMyDrawing();
restoreOpenGLState(state);
}
Cosa dovrebbe MyOpenGLState
, saveOpenGLState(state)
, setStateToDefault()
e restoreOpenGLState(state)
guarda come per garantire che doMyDrawing
si comporteranno correttamente e che nulla di ciò che faccio in doMyDrawing
influenzerà qualsiasi altra cosa che uno sviluppatore di terze parti potrebbe fare?
Il problema che mi ha morso è che OpenGL ha un sacco di stato implicito e non sono sicuro di catturarlo tutto.
Aggiornamento: La mia preoccupazione principale è OpenGL ES 2.0, ma ho pensato di fare la domanda più in generale
non sono quelli deprecati? – KillianDS
La domanda riguarda principalmente OpenGL ES 2.0, che non fa parte di 'glPushAttrib' o' glPopAttrib' (vedere http://www.khronos.org/opengles/sdk/docs/man/). – Caterpillar