2016-10-25 14 views
0

これはおそらく、私がSFMLライブラリを使用してC++でコードのこの部分を持っている...愚かな質問のような音にトラブルC++のコードを凝縮 - SFML

が起こっている:

#include <SFML/Graphics.hpp> 
#include <string> 

void textDisplay(sf::Text& display_text, std::string display_str, sf::Font display_font, int char_size) { 
    display_text.setString(display_str); 
    display_text.setFont(display_font); 
    display_text.setCharacterSize(char_size); 
    display_text.setStyle(sf::Text::Regular); 
} 

int main() { 
    sf::RenderWindow window(sf::VideoMode(400, 400), "Game"); 
    sf::Font arial; 
    if (!arial.loadFromFile("fonts/arial/arial.ttf")) { 
     return 0; 
    } 

    sf::Text text; 
    textDisplay(text, "Hello, World!", arial, 30); 

    sf::CircleShape shape(100.f, 10); 
    shape.setFillColor(sf::Color::Yellow); 

    while (window.isOpen()) { 
     sf::Event event; 
     while (window.pollEvent(event)) { 
      if (event.type == sf::Event::Closed) { 
       window.close(); 
      } 
     } 

     window.clear(); 
     window.draw(text); 
     window.display(); 
    } 

    return 0; 
} 

SFML画面にテキストを表示しようとしているときに、コードを繰り返すのではなく、同じ4行のコードを何度も繰り返すので、4つの引数をとる関数(textDisplay)を作成しました。 Textオブジェクト自体、文字列、フォント、および文字サイズ)を取得し、を初期化します私のためのオブジェクト。

何らかの理由で、テキストが表示されない - 間違っていることはありますか?

いくつかのもの:

  • ウィンドウがwindowと呼ばれています。
  • コンパイル時にエラーはありません。そのため、エラーの原因はわかりません。
  • ボード自体は黒で、windowにはテキストはありません。

エラーが機能自体と関係する場合は、同じ4行を何度も繰り返し入力することをお勧めしますか?あなたは一時的なフォントを使ってテキストを設定し、それを見つけた

+0

あなたは反転/描画した後のバッファを提示していますか? –

+0

@IvanRubinsonええ、私はしました - ハングアップ、私はスニペットに入れます。 –

+0

@IvanRubinsonうん、それを手に入れた。 –

答えて

2

は、通常の変数ではなく、参照/ポインタ以来:

void textDisplay(sf::Text& display_text, std::string display_str, sf::Font& display_font, int char_size) { //Just make it a reference and its done! :) 
    display_text.setString(display_str); 
    display_text.setFont(display_font); 
    display_text.setCharacterSize(char_size); 
    display_text.setStyle(sf::Text::Regular); 
} 
+1

うーん、それは動作します!ありがとう! –

+0

SFML;とよく似たエラーです)、形状についても注意してください – Treycos