C++ 带有glBlendFunc()的负颜色?

C++ 带有glBlendFunc()的负颜色?,c++,opengl,C++,Opengl,我希望我的线条是用负颜色绘制的(从线条下的屏幕上),我只是不明白混合是如何工作的,看了文档等,测试了50种组合等等。开始觉得这根本不可能 有人能给出这两个值吗?画一条白线并使用glBlendFunc(GL\u ONE\u减去GL\u DST\u COLOR,GL\u ZERO)别忘了启用GL_BLEND为此,您应该使用逻辑运算。不要混合。 所以你所要做的就是打电话: glEnable(GL_COLOR_LOGIC_OP); glLogicOp(GL_INVERT); 您也可以使用GL_uxor

我希望我的线条是用负颜色绘制的(从线条下的屏幕上),我只是不明白混合是如何工作的,看了文档等,测试了50种组合等等。开始觉得这根本不可能


有人能给出这两个值吗?

画一条白线并使用
glBlendFunc(GL\u ONE\u减去GL\u DST\u COLOR,GL\u ZERO)别忘了启用GL_BLEND

为此,您应该使用逻辑运算。不要混合。 所以你所要做的就是打电话:

glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(GL_INVERT);

您也可以使用GL_uxor,这取决于您想要实现什么。如果要将帧缓冲区精确恢复为线条绘制之前的状态,则GL_uxor非常有用。只要用GL_XOR再次画一条相同的线((a XOR b)XOR b==a)。这是CAD世界中的常见技巧。

此解决方案不适用于OpenGL ES 2或更高版本,因为不推荐使用GL_COLOR_LOGIC_OP。@andreas brinck的解决方案非常有效。@Geoffrey:谢谢,你说得对,应该使用glBlendFunc。