首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sf::Shader和sf::RectangleShape

sf::Shader和sf::RectangleShape
EN

Stack Overflow用户
提问于 2013-04-05 04:10:40
回答 1查看 874关注 0票数 0

我有一个关于使用SFML图形库中的sf::Shape的问题。在我的游戏中,我使用sf::RectangleShapes。例如UserInterface或播放器。下面是一个简单的代码:

代码语言:javascript
复制
std::unique_ptr<sf::RectangleShape> rect;
sf::RenderTarget &target;
sf::RenderStates &stats;

void SfUIComponents::SfBaseRectangle::draw()
{
        target.draw(*rect, stats);
}

当我使用如下所示的文件加载着色器时:

代码语言:javascript
复制
If(shader->loadFromFile(vertex, fragment)){ loaded = true;}

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

在我画矩形之前:

代码语言:javascript
复制
void SfShader::activate()
{
    stats.shader = shader;
}

我绘制的文本也显示了效果,但矩形不可见。所以ms问题不需要显示更多的代码。是否可以对简单填充白色的矩形使用sfml着色器?

EN

回答 1

Stack Overflow用户

发布于 2013-04-09 19:09:37

在绘制到渲染中时,可以使用着色器。你可以创建一个"sf::RenderState",并设置它的着色器:

代码语言:javascript
复制
sf::RenderState rs;
sf::Shader effect;

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

rs.shader = &effect;

window.draw(rect , rs);

如果不需要使用RenderState中的更多信息(如纹理),可以直接将着色器传递给绘图函数:

代码语言:javascript
复制
sf::Shader effect;

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

window.draw(rect , &effect);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15820800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档