【问题标题】:negative color with glBlendFunc()?glBlendFunc() 的负颜色?
【发布时间】:2009-12-09 14:00:42
【问题描述】:

我希望我的线条用负色绘制(取自屏幕下方的线条),我只是不明白混合是如何工作的,查看了文档等,测试了 50 种组合等等。开始认为这根本不可能......

有人可以给出这两个值吗?

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    画一条白线并使用glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);别忘了启用GL_BLEND

    【讨论】:

      【解决方案2】:

      您应该为此目的使用逻辑操作。不掺合。 所以你所要做的就是打电话:

      glEnable(GL_COLOR_LOGIC_OP);
      glLogicOp(GL_INVERT);
      

      您也可以使用 GL_ XOR,具体取决于您想要实现的目标。如果您想将帧缓冲区完全恢复到画线发生之前的状态,则 GL_ XOR 很有用。只需再次使用 GL_XOR 再次绘制同一条线 ((a xor b) xor b == a)。这是 CAD 世界中的常见技巧。

      【讨论】:

      • 此解决方案不适用于 OpenGL ES 2 或更高版本,因为不推荐使用 GL_COLOR_LOGIC_OP。 @andreas-brinck 的解决方案效果很好。
      • @Geoffrey:谢谢,你说得对,应该使用 glBlendFunc。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2013-11-23
      • 2019-12-28
      相关资源
      最近更新 更多