Je veux faire quelque chose comme ceci:
currentBlendFunc = glGetCurrentBlendFunc(); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // [...] do stuff glBlendFunc(currentBlendFunc.src, currentBlendFunc.dest);
3 Réponses :
Selon le Documentation La fonction que vous Recherchez-vous est Glget avec les arguments GL_BLEND_SRC, GL_BLEND_DST. C'est l'une des ennuis sur OpenGL, c'est que les get et les ensembles ne correspondent pas (entre autres). P>
Je viens de courir dans cette même situation exacte. Voici mon approche pour économiser l'état de mélange précédent et la restauration lorsque vous avez terminé.
// save off current state of blend enabled
GLboolean blendEnabled;
glGetBooleanv(GL_BLEND, &blendEnabled);
// save off current state of src / dst blend functions
GLint blendSrc;
GLint blendDst;
glGetIntegerv(GL_BLEND_SRC_ALPHA, &blendSrc);
glGetIntegerv(GL_BLEND_DST_ALPHA, &blendDst);
//
// change blend state... do other stuff
//
// restore saved state of blend enabled and blend functions
if (blendEnabled) {
glEnable(GL_BLEND);
}
else {
glDisable(GL_BLEND);
}
glBlendFunc(blendSrc, blendDst);
ans plus tard, j'ai couru dans le même problème, les docs ne sont toujours pas clairs ou bugiés.
@ Solution de Don en incomplète / buggy, vous devez également restaurer les valeurs ... p> _rgb code>: < / p>