私のクラスには、2 つの画像をロードする関数がありますが、特定の条件に基づいて 1 回しか表示されません。
問題は、条件の前に最初に画像をロードする必要があることです。これはメインループで発生しています。そして、それが賢明かどうかわからないので、もう少しエレガントにするために何ができるのか疑問に思っていました....
これは私が持っているものです:
Main Loop
:
btn_quit.RenderBttn(window,mouseX,mouseY);
Class function
void RenderBttn(sf::RenderWindow &destination,int mouseX, int mouseY)
{
std::string img = "button.png";
sf::Texture button;
if (!button.loadFromFile(img)){
exit(4);
}
std::string img_on = "button_on.png";
sf::Texture button_on;
if (!button_on.loadFromFile(img_on)){
exit(5);
}
sf::Sprite sprite(button);
m_w = sprite.getLocalBounds().width; //get dimensions
m_h = sprite.getLocalBounds().height; //get dimensions
sf::Sprite result(IsIn(mouseX,mouseY) ? button_on : button); //check if mouse is over the button
result.setPosition(m_x,m_y);
destination.draw(result);
}
私が持っていた1つの解決策は、固定数のボタンサイズを使用することでしたが、後で画像サイズを変更する機能が制限されました.
しかし、毎回メインループに2つの画像をロードしていますが、これは確かにパフォーマンスに悪いですか?
あなたが助けてくれることを願っています:)