我想使用满足以下要求的OpenGL ES 3.1来实现片段/混合操作:

  • 如果片段着色器产生的像素满足特定条件(可以最早在顶点着色器中确定),则应将其颜色值添加到帧缓冲区的像素值中。
  • 如果像素不满足条件,则颜色应完全替换帧缓冲区中的颜色。

  • 可以通过常规的混合功能,alpha技巧等来完成此操作吗?

    最佳答案

    我认为您可以只使用标准的预乘alpha混合:

    glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
    

    如果要替换,则从片段着色器输出一个Alpha值1。如果要进行加法运算,则从片段着色器输出一个alpha值0。

    假设您只对帧缓冲区中的RGB值真正感兴趣。

    关于c++ - 与OpenGL ES的条件混合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53886443/

    10-11 22:42
    查看更多