2013-04-04 71 views
0

我有一個關於從SFML圖形庫中使用sf::Shape的問題。在我的遊戲中,我使用sf::RectangleShapes。例如UserInterface或玩家。這裏是一個代碼和平:sf :: Shader和sf :: RectangleShape

std::unique_ptr<sf::RectangleShape> rect; 
sf::RenderTarget &target; 
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着色器進行簡單的白色填充的矩形?

回答

1

您可以在繪製到渲染時使用着色器。

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

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

rs.shader = &effect; 

window.draw(rect , rs); 

如果您不需要使用來自繪製狀態(如紋理)的更多信息,你可以直接傳遞: 您可以通過創建「SF ::繪製狀態」,並設置它的着色器做到這一點着色器的繪圖功能:

sf::Shader effect; 

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

window.draw(rect , &effect); 
+0

我試過,但矩形是不可見的。我有關於使用「shader.SetTexture(」圖像「,圖像)的解決方案;」我給了矩形一個紋理,並直接加載和設置紋理後。我使用sf :: Shader :: currentTexture。知道這是可能的。但感謝您的回答(: – 2013-04-10 07:25:38

相關問題