【问题标题】:Artifacts on a font texture on characters字符上的字体纹理上的伪影
【发布时间】:2013-10-08 14:46:12
【问题描述】:

我在使用线性过滤器的 OpenGL 1.1 上渲染纹理时遇到问题:它会像这样在“0”和“8”上渲染一些伪影:

download it for zooming

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

我尝试了所有 GL_TEXTURE_WRAP_S/GL_TEXTURE_WRAP_T 值,但没有成功。 最近的过滤器不显示工件:但它很丑(我不想使用这个过滤器)

字体纹理看起来还可以(我只是复制了有趣的部分并添加了背景颜色以供理解):

You can download it here with the transparent background (#00000000)

混合似乎也不错:glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

【问题讨论】:

  • 你使用的是默认的GL_MODULATEtexenv吗?如果是这样,您是否曾经从默认的RGBA(1,1,1,1) 更改当前颜色状态?
  • 是的,它已经设置为 GL_MODULATE 并且 glColorf 是 RGBA(1,1,1,1)
  • 您有什么想法或建议吗?

标签: opengl fonts rendering artifacts


【解决方案1】:

解决方案是使用预乘 alpha。基本上,您需要将 RGB 与纹理中的 alpha 相乘。并使用 glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

这是一个很好的视频来解释您的问题:

http://www.youtube.com/watch?v=dU9AXzCabiM

【讨论】:

  • 当我使用 SDL 时,我使用 SDL_SetSurfaceBlendMode 和 SDL_BLENDMODE_BLEND 来进行预乘 alpha,它与 glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA) 一起使用。干得好,谢谢你:我给你 50 声望!
猜你喜欢
  • 1970-01-01
  • 2017-05-13
  • 2022-01-21
  • 2015-07-12
  • 2013-11-10
  • 2012-04-04
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多