【问题标题】:SFML Blur Shader shows no effectSFML 模糊着色器显示没有效果
【发布时间】:2014-07-11 13:36:10
【问题描述】:

我正在尝试按照他们的示例实现 SFML 着色器,但它没有显示出来。

GameObject是一个继承和实现sf::Drawable的类。在GameObject 里面我有一个sf::Texture 和一个sf::Sprite 对象,负责游戏对象的图像。我正在尝试对其应用模糊效果。这是我加载图像和着色器的 .cpp:

x = new GameObject("Images/apple.png", 100, 100, 1, 1);
mshade.loadFromFile("Shaders/blur.frag", sf::Shader::Fragment);
mshade.setParameter("texture", *(x)->objectTexture);
mshade.setParameter("blur_radius", 200);

我就是这样画的:

gameWindow->draw(*x, &mshade);

这是创建模糊着色器的 GLSL 代码:

uniform sampler2D texture;
uniform float blur_radius;

void main()
{
    vec2 offx = vec2(blur_radius, 0.0);
    vec2 offy = vec2(0.0, blur_radius);

    vec4 pixel = texture2D(texture, gl_TexCoord[0].xy)               * 4.0 +
                 texture2D(texture, gl_TexCoord[0].xy - offx)        * 2.0 +
                 texture2D(texture, gl_TexCoord[0].xy + offx)        * 2.0 +
                 texture2D(texture, gl_TexCoord[0].xy - offy)        * 2.0 +
                 texture2D(texture, gl_TexCoord[0].xy + offy)        * 2.0 +
                 texture2D(texture, gl_TexCoord[0].xy - offx - offy) * 1.0 +
                 texture2D(texture, gl_TexCoord[0].xy - offx + offy) * 1.0 +
                 texture2D(texture, gl_TexCoord[0].xy + offx - offy) * 1.0 +
                 texture2D(texture, gl_TexCoord[0].xy + offx + offy) * 1.0;

    gl_FragColor =  gl_Color * (pixel / 16.0);
}

但由于某种原因,图像显示正常,没有任何效果。我也没有收到任何错误。有谁知道为什么不显示模糊效果?

【问题讨论】:

  • 我想你还需要一个顶点着色器(除非 SFML 默认为它自己的顶点着色器,如果没有提供的话)。 sd::Shader::loadFromFile() 是否返回 true?
  • 根据他们的教程,您只能使用一种着色器。我会检查 loadFromFile 看看它是否有效。

标签: c++ opengl glsl sfml


【解决方案1】:

我对 SFML 一无所知,但我看起来您的 blur_radius 选择不当。 您的图像大小为 100x100,并且模糊着色器对距离为 200 像素(blur_radius)的图像进行采样。因此,如果您的纹理启用了 gl_repeat ,则您击中的像素与原始像素完全相同。 -> 没有模糊

尝试使用较低的 blur_radius 可能在 2-5 左右

【讨论】:

    【解决方案2】:

    好吧,我的问题是:SFML shader not working 我在这个问题上也得到了帮助,我建议你去看看 tntxtnt 的答案,这可能会对你有所帮助。但基本上它不会模糊纹理的轮廓它只会模糊精灵内部的颜色。

    【讨论】:

      猜你喜欢
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多