Bonjour,
J'aimerais développer un petit jeu en 2D basé sur des effets de lumière.
Ca fait très longtemps que je n'ai pas développé en C++, je me suis souvenu que je jouais avec la SFML et que j'aimais bien donc je l'ai reprise, j'utilise la 2.0.
Voilà pour la petite histoire.
Mon problème est que j'ai l'impression que ma méthode pour faire mes effets de lumière va être très très gourmande quand je vois la petite maquette que je viens d'écrire.
Ma question est donc :
avez-vous des axes d'optimisation ?J'utilise deux RenderTexture :
- gameTexture : Pour les sprites du jeu
- blendTexture : Pour les effets de lumière
En gros je dessine mon jeu dans la gameTexture.
Puis mes effets de transparence en niveau de gris dans la blendTexture.
Je dessine la blendTexture sur le RenderWindow, puis la gameTexture en "BlendMultiply".
Ce qui donne :
blendTexture.clear();
blendTexture.draw(rectangle);
blendTexture.setSmooth(true);
for (float radius = 1000.0f; radius > 200.0f; radius -= 2.0f) {
sf::CircleShape circle(radius);
int black = -0.30625 * radius + 316.25; // Droite
circle.setFillColor(sf::Color(black, black, black));
circle.setPointCount(radius/10);
circle.setPosition(pos.x - radius, pos.y - radius);
blendTexture.draw(circle);
}
blendTexture.display();
gameTexture.clear();
gameTexture.draw(sprite);
gameTexture.display();
sf::Sprite blend(blendTexture.getTexture());
sf::Sprite game(gameTexture.getTexture());
window.clear();
window.draw(blend);
window.draw(game, sf::BlendMultiply);
window.display();
J'ai mis en pièce jointe le petit fichier de source complet de la maquette si ça intéresse.
Si vous voulez tester il faut mettre une image "115869.jpg" qui fait 1920x1080 (si votre résolution supporte) pour lancer l'application.
Merci,
[attachment deleted by admin]