我对使用SFML图形库中的sf::Shape
有疑问。在我的游戏中,我使用sf::RectangleShapes
。例如UserInterface或播放器。这是代码的和平:
std::unique_ptr<sf::RectangleShape> rect;
sf::RenderTarget ⌖
sf::RenderStates &stats;
void SfUIComponents::SfBaseRectangle::draw()
{
target.draw(*rect, stats);
}
当我使用像这样的文件加载着色器时:
If(shader->loadFromFile(vertex, fragment)){ loaded = true;}
effect->loadFromFile("wave.vert","blur.frag");
在绘制矩形之前:
void SfShader::activate()
{
stats.shader = shader;
}
我绘制的文字也显示效果,但矩形不可见。所以ms问题没有显示更多代码。是否可以将sfml着色器用于简单填充白色的矩形?
答案 0 :(得分:1)
绘制渲染时可以使用着色器。 您可以通过创建“sf :: RenderState”并设置它的着色器来完成此操作:
sf::RenderState rs;
sf::Shader effect;
effect.loadFromFile("wave.vert","blur.frag");
rs.shader = &effect;
window.draw(rect , rs);
如果您不需要使用RenderState中的更多信息(如纹理),您可以直接将着色器传递给绘制函数:
sf::Shader effect;
effect.loadFromFile("wave.vert","blur.frag");
window.draw(rect , &effect);