Opengl 字符上字体纹理上的瑕疵

Opengl 字符上字体纹理上的瑕疵,opengl,fonts,rendering,artifacts,Opengl,Fonts,Rendering,Artifacts,我在OpenGL 1.1上使用线性过滤器进行纹理渲染时遇到问题:它在“0”和“8”上渲染一些工件,如下所示: 它在第一列像素上添加一种阴影 我尝试了所有的GL\u TEXTURE\u WRAP\u S/GL\u TEXTURE\u WRAP\T值,但没有成功。 最近的过滤器不显示工件:但它很难看(我不想使用这个过滤器) 字体纹理似乎还可以(我只是复制了有趣的部分并添加了背景色以便于理解): 混合看起来也不错:glBlendFunc(GL_SRC_ALPHA,GL_ONE_减去grc_ALP

我在OpenGL 1.1上使用线性过滤器进行纹理渲染时遇到问题:它在“0”和“8”上渲染一些工件,如下所示:

它在第一列像素上添加一种阴影

我尝试了所有的GL\u TEXTURE\u WRAP\u S/GL\u TEXTURE\u WRAP\T值,但没有成功。 最近的过滤器不显示工件:但它很难看(我不想使用这个过滤器)

字体纹理似乎还可以(我只是复制了有趣的部分并添加了背景色以便于理解):


混合看起来也不错:
glBlendFunc(GL_SRC_ALPHA,GL_ONE_减去grc_ALPHA)

解决方案是使用预乘法alpha。基本上,你需要将你的RGB乘以你纹理中的alpha。并使用glBlendFunc(GL_ONE,GL_ONE_减去SRC_ALPHA)

下面是一个很好的视频,可以解释您的问题:


是否使用默认的
GL\u调制
texenv?如果是这样,您是否曾经更改过当前颜色状态,从默认的
RGBA(1,1,1,1)
?是的,它已经设置为GL_MODULATE,glColorf是RGBA(1,1,1,1),您有什么想法或建议吗?当我使用SDL时,我使用SDL_seturfaceblendmode与SDL_BLENDMODE_混合来进行预乘alpha,它与glBlendFunc一起工作(GL_ONE,GL_ONE _减去SRC_ALPHA)。干得好,谢谢你:我给你50%的声誉!