我正在制作一个绘图软件,我几乎将画笔的性能和外观都提升到了不错的水平,但是我还有最后一个问题。为了获得我正在寻找的性能(多个撤消/历史级别),我必须将每个形状绘制到纹理,并在简单的4个顶点poly上使用该纹理。一切顺利,性能很棒,外观很棒(特别是在我启用多重采样之后)仍然,在单独的帧缓冲区中绘制纹理的过程中,轮廓围绕每个对象,如下图所示。我观察到轮廓的颜色与glClearColor
中的颜色相同。我怀疑是混合?我用
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
但不确定。我怎样摆脱轮廓?
答案 0 :(得分:2)
尝试使用预乘alpha进行混合:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
为了使用任何颜色,您还应该清除颜色缓冲区,您将在其中绘制纹理:
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
但是,如果您有半透明部件,这可能会导致问题。