6
votes

OpenGL ES - Obtenez Blendunc actuel

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);


0 commentaires

3 Réponses :


4
votes

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).


0 commentaires

4
votes

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);


0 commentaires

5
votes

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 _rgb : < / p> xxx

... xxx


0 commentaires