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