所以我想在我的程序中添加一个精灵。它有一个奇怪的错误:
正如您在图像顶部看到的那样,有一条黑线。好吧,那条线不应该在那里。此外,由于我没有收到任何错误,我不知道问题可能在哪里。
这是我设置混合功能的地方:
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
绘制此对象加上背景屏幕,这是一个带纹理贴图的矩形。正常纹理正在工作。 答案 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);
它运作正常。