OpenGL ES - 获取当前的 blendFunc

qua*_*ano 6 opengl-es

我想做这样的事情:

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

// [...] do stuff

glBlendFunc(currentBlendFunc.src, currentBlendFunc.dest);
Run Code Online (Sandbox Code Playgroud)

有没有办法获得当前的混合功能?

rot*_*lup 5

多年后,我遇到了同样的问题,文档仍然不清楚或被窃听。

@don 在不完整/错误中的解决方案,但您还需要恢复这些_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);
Run Code Online (Sandbox Code Playgroud)

...

glBlendFuncSeparate(last_blend_src_rgb, last_blend_dst_rgb, last_blend_src_alpha, last_blend_dst_alpha);
Run Code Online (Sandbox Code Playgroud)


mon*_*ksy 4

根据文档,您正在寻找的函数是 glGet ,其参数为 GL_BLEND_SRC、GL_BLEND_DST。这是 OpenGL 的烦恼之一,即获取和设置不匹配(除其他外)。