可能有一种更简单的方法可以做到这一点,我可以用我想象的着色器来做,但我觉得设置混合功能更简单。
Shader可能是gl_FragColor = vec4(texture.rgb, 0);
出于某种原因,我需要让一个刚刚清除的FBO填充透明(0)纹理。这样,FBO中的像素在视觉上是透明的,但包含纹理的RGB值。
很难解释,但它基本上是一个glClear()
但是有一个纹理而不是一个纯色。是否有一个组合混合src / dst函数可以完成这个?
基本上,FBO事先的样子并不重要。然后我想为它渲染一个纹理,但由于我用alpha 0渲染它,它不会覆盖现有的FBO像素。
答案 0 :(得分:3)
如果你真的想通过混合来做到这一点,你可以通过最初在GL_EXT_blend_func_separate
中引入的单独混合因子(在2.0版中提升为OpenGL核心功能)来实现这一点:
glEnable(GL_BLEND);
glBlendFuncSeparate(GL_ONE, GL_ZERO, GL_ZERO, GL_ZERO);
glBlendEquation(GL_ADD); // is the default anyway