Opengl es OpenGL ES-获取当前blendFunc

Opengl es OpenGL ES-获取当前blendFunc,opengl-es,Opengl Es,我想这样做: currentBlendFunc = glGetCurrentBlendFunc(); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // [...] do stuff glBlendFunc(currentBlendFunc.src, currentBlendFunc.dest); 有没有办法获取当前的混合函数?根据您正在寻找的函数是glGet,带有参数GL_blend_SRC、GL_blend_DST。这是Open

我想这样做:

currentBlendFunc = glGetCurrentBlendFunc();
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

// [...] do stuff

glBlendFunc(currentBlendFunc.src, currentBlendFunc.dest);

有没有办法获取当前的混合函数?

根据您正在寻找的函数是glGet,带有参数GL_blend_SRC、GL_blend_DST。这是OpenGL的烦恼之一,即get和set不匹配(除其他外)。

我刚刚遇到了完全相同的情况。下面是我保存以前的混合状态并在完成后恢复的方法

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

几年后,我在同一期杂志上发表了同样的文章,这些文件仍然不清楚或有漏洞

@但是,不要在未完成/错误中使用解决方案,您还需要恢复
\u RGB
值:

GLint last_blend_src_rgb; glGetIntegerv(GL_BLEND_SRC_RGB, &last_blend_src_rgb);
GLint last_blend_dst_rgb; glGetIntegerv(GL_BLEND_DST_RGB, &last_blend_dst_rgb);
GLint last_blend_src_alpha; glGetIntegerv(GL_BLEND_SRC_ALPHA, &last_blend_src_alpha);
GLint last_blend_dst_alpha; glGetIntegerv(GL_BLEND_DST_ALPHA, &last_blend_dst_alpha);

glBlendFuncSeparate(last_blend_src_rgb, last_blend_dst_rgb, last_blend_src_alpha, last_blend_dst_alpha);