3

我正在制作一个绘图软件,我几乎已经将画笔改进到了相当不错的性能和外观水平,但是我还有最后一个问题。为了获得我正在寻找的性能(多个撤消/历史级别),我必须将每个形状绘制到纹理并在简单的 4 顶点多边形上使用该纹理。一切顺利,性能很棒而且看起来很棒(尤其是在我启用了多重采样之后)仍然,在单独的帧缓冲区中绘制纹理的过程中,轮廓围绕着每个对象,如下图所示。我观察到轮廓的颜色与glClearColor. 我怀疑是混合?我用

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

但不确定。我怎样才能摆脱轮廓?

在此处输入图像描述

4

1 回答 1

2

尝试使用预乘 alpha 进行混合:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

为了使它适用于任何颜色,您还应该清除将在其中绘制纹理的颜色缓冲区,如下所示:

glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);

但是,如果您有半透明部件,这可能会导致问题。

于 2013-03-03T02:22:59.177 回答