Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SFML加载着色器错误_C++_Shader_Sfml - Fatal编程技术网

C++ SFML加载着色器错误

C++ SFML加载着色器错误,c++,shader,sfml,C++,Shader,Sfml,因此,我正在使用SFML进行我的游戏项目,并尝试实现一个模糊着色器。我不知道为什么,但这段代码使程序显示一个白色屏幕,然后关闭。我甚至没有使用着色器绘制任何东西,只是我尝试加载它的事实给出了意外的结果:( 这有什么问题?调用时的返回值是多少: sf::Shader::isAvailable() 在调用着色器程序之前,请确保您可以使用该程序。此外,着色器不能使程序崩溃,因此它肯定不是您的着色器。如果着色器有问题,它将不会编译。如果着色器没有编译,则SFML会自动切换到内置着色器。为什么哦,为什么

因此,我正在使用SFML进行我的游戏项目,并尝试实现一个模糊着色器。我不知道为什么,但这段代码使程序显示一个白色屏幕,然后关闭。我甚至没有使用着色器绘制任何东西,只是我尝试加载它的事实给出了意外的结果:(


这有什么问题?

调用时的返回值是多少:

sf::Shader::isAvailable()

在调用着色器程序之前,请确保您可以使用该程序。此外,着色器不能使程序崩溃,因此它肯定不是您的着色器。如果着色器有问题,它将不会编译。如果着色器没有编译,则SFML会自动切换到内置着色器。

为什么哦,为什么在绘图函数之外绘图?永不r这样做。设置一个更新、绘制和轮询事件的主循环。所有这些都需要分开。然后,使用绘制和更新函数返回。我正在绘制sf::RenderTexture,以便我可以使用该纹理使用着色器绘制实际按钮。无论如何,我没有在屏幕上绘制任何内容。我认为这不是问题。这就是问题所在可能是这样。认真地,先建立一个标准循环。老实说,伙计,我对SFML和/或C++不是新的。忘记它。
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);
}
sf::Shader::isAvailable()