Bonjour,
j'ai acheté un nouveau pc portable qui tourne sur windows 10, il a un processeur i5, 1 carte graphique intel graphics 630 et nvidia gtx1050. J'ai utilise le même code que j'avais sur mon fixe qui a aussi un i5 mais une carte nvidia gtx750.
Le truc c'est que sur mon fixe (w7) tout fonctionne, c'est juste une boule dans un rectangle qui rebondit, dirigée avec zqsd ET un texte en fond qui affiche la vitesse au cours du temps.
Sur mon portable (w10) la boule rebondit normal mais y'a pas de texte.
La partie du code concernée c'est
void Game::render()
{
mWindow.clear(sf::Color::Red);
sf::Font font;
font.loadFromFile("C:/Users/Se7en/Documents/Codeblocks/SFML_APP/arial.ttf");
std::string String = static_cast<std::ostringstream*>( &(std::ostringstream() << speed.x) )->str();
sf::Text text(String,font);
text.setStyle(sf::Text::Bold);
text.setColor(sf::Color::White);
text.setPosition(50,50);
sf::Font font2;
font2.loadFromFile("C:/Users/Se7en/Documents/Codeblocks/SFML_APP/arial.ttf");
std::string String2 = static_cast<std::ostringstream*>( &(std::ostringstream() << speed.y) )->str();
sf::Text text2(String2,font2);
text2.setStyle(sf::Text::Bold);
text2.setColor(sf::Color::White);
text2.setPosition(50,100);
mWindow.draw(text);
mWindow.draw(text2);
mWindow.draw(mPlayer);
mWindow.display();
}
note: bien sûr j'ai modifié le chemin (de la police) pour être cohérent sur mon portable, aussi, il n'y a aucune erreur à la compilation, j'utilise exactement le même fichier cmake de codeblock sur chacun de mes 2 pcs
Salut blacksages,
Je ne sais aucunement si ce que je vais relever va influencer ton affichage mais tes performances oui.
Dans ta boucle de rendu (à chaque frame donc) tu load les différentes fonts de ton programme, une erreur parce que tu gaspilles de l'espace mémoire. La meilleure des solutions est de déclarer un unique objet sf::Font (un objet font par police de caractères, ex : un pour arial, un pour calibri, etc..) en début de programme (en dehors d'une quelconque boucle) et de le passer en paramètre à tout tes objets sf::Text.
Voici un code d'illustration
//.. Les fichiers headers
int main(){
sf::Font maFont; //Déclaration de ma font, hors de la boucle principale, d'event
if(!maFont.loadFromFile(file))
std::cout << "Erreur : impossible de trouver la font : " << file << std::endl;
//À partir de maintenant tu peux utiliser ton objet sf::Font partout dans ce scope main
sf::Text text1("Text1", maFont);
sf::Text text2("Text2", maFont);
//.. Du code, du code
//Zone de rendu
window.draw(text1);
window.draw(text2);
return 0;
}
En espérant t'avoir aiguillé au mieux :D
Cordialement G