【问题标题】:Subtractive blending with OpenGL?与OpenGL的减法混合?
【发布时间】:2010-07-30 06:04:35
【问题描述】:

例如,我想绘制形状 A、B、C,然后设置搅拌器,然后绘制形状 D 和形状 D 所在的任何地方,场景显示我的背景颜色 (1,1,1,0)。谢谢

【问题讨论】:

  • 如果我的源颜色是(1,1,1,0) 那么不应该有办法吗?

标签: c++ c opengl


【解决方案1】:

我不知道这可以直接实现。不过,有几种可能性可以获得相同的效果。最干净的方法可能是先用 1 填充模板缓冲区,然后用 0 将形状 D 绘制到模板缓冲区中,然后绘制其他所有内容(当然,启用模板缓冲区)。

【讨论】:

    【解决方案2】:

    比其他答案简单得多:

    • 以正常方式显示形状 A、B 和 C
    • glDisable(GL_DEPTH_TEST);
    • glDisable(GL_ALPHA_TEST);
    • glDisable(GL_BLEND);
    • 用颜色 (1,1,1,0) 显示形状 D

    你就完成了。

    【讨论】:

    • @Jex 您可能还想禁用深度写入,具体取决于您要执行的操作
    【解决方案3】:

    glBlendEquation可以做到。

    【讨论】:

    • 这甚至与操作人员的要求相差甚远。
    • 不是吗?如果我将形状设置为 1,1,1,0,则 SUBTRACT 操作的结果应该使新像素为 1,1,1,0?
    • @Blindy 题名是指减法混合,但既然你提到它,题体指的是另外一个完全不同的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2011-04-29
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多