Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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++ sf::着色器和sf::矩形形状_C++_Sfml - Fatal编程技术网

C++ sf::着色器和sf::矩形形状

C++ sf::着色器和sf::矩形形状,c++,sfml,C++,Sfml,关于使用SFML图形库中的sf::Shape,我有一个问题。在我的游戏中,我使用sf::长方形。例如用户界面或播放器。这是一个和平的代码: std::unique_ptr<sf::RectangleShape> rect; sf::RenderTarget &target; sf::RenderStates &stats; void SfUIComponents::SfBaseRectangle::draw() { target.draw(*rect

关于使用SFML图形库中的
sf::Shape
,我有一个问题。在我的游戏中,我使用
sf::长方形
。例如用户界面或播放器。这是一个和平的代码:

std::unique_ptr<sf::RectangleShape> rect;
sf::RenderTarget &target;
sf::RenderStates &stats;

void SfUIComponents::SfBaseRectangle::draw()
{
        target.draw(*rect, stats);
}
在绘制矩形之前:

void SfShader::activate()
{
    stats.shader = shader;
}

我画的文字也显示了效果,但矩形不可见。因此,ms在没有显示更多代码的情况下提出了问题。是否可以将sfml着色器用于简单的白色填充矩形

在绘制到渲染中时,可以使用着色器。 可以通过创建“sf::RenderState”并将其着色器设置为:

sf::RenderState rs;
sf::Shader effect;

effect.loadFromFile("wave.vert","blur.frag");

rs.shader = &effect;

window.draw(rect , rs);
如果不需要使用来自RenderState(如纹理)的更多信息,可以直接将着色器传递给draw函数:

sf::Shader effect;

effect.loadFromFile("wave.vert","blur.frag");

window.draw(rect , &effect);

我已经试过了,但是矩形不可见。我有一个关于使用“shader.SetTexture(“image”,image);”的解决方案,我在加载和设置纹理后直接给rect一个纹理。我使用sf::Shader::currentTexture。我知道这是可能的。但是谢谢你的回答(:
sf::Shader effect;

effect.loadFromFile("wave.vert","blur.frag");

window.draw(rect , &effect);