在精灵顶部的奇怪的线有透明背景

时间:2015-12-19 03:33:54

标签: c++ opengl textures

所以我想在我的程序中添加一个精灵。它有一个奇怪的错误:

enter image description here

正如您在图像顶部看到的那样,有一条黑线。好吧,那条线不应该在那里。此外,由于我没有收到任何错误,我不知道问题可能在哪里。

这是我设置混合功能的地方:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// same result: glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

我的片段着色器:

#version core 330
in vec2 texCoords;
out vec4 frag_color;

uniform sampler2D image;

void main()
{
    frag_color = texture(image, texCoords);
}

图片是在piskel

中创建的
  • 这可能是图像本身的问题吗?我非常怀疑它,因为我在piskel以及GIMP上验证了这一点,并且两者都报告它有一个alpha通道。
  • 我也只是使用glClear绘制此对象加上背景屏幕,这是一个带纹理贴图的矩形。正常纹理正在工作。

1 个答案:

答案 0 :(得分:0)

感谢Reto Koradi,我发现了这个问题。我之前使用过这个:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

现在我将值切换为:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);

它运作正常。