纹理边缘透明度问题

时间:2013-03-03 01:45:18

标签: opengl-es opengl-es-2.0

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

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

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

enter image description here

1 个答案:

答案 0 :(得分:2)

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

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

为了使用任何颜色,您还应该清除颜色缓冲区,您将在其中绘制纹理:

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

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