Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: sf::RenderTexture prends énormément de ressource CPU.  (Lu 7483 fois)

0 Membres et 1 Invité sur ce sujet

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::RenderTexture prends énormément de ressource CPU.
« Réponse #15 le: Juin 27, 2012, 01:00:34 pm »
Citer
Le window.draw() me prends environ 4% du CPU (sur les 38 de bases). La création du sprite c'est environ 2% . Sinon les autres ben sa ne bouge pas trop.
Alors c'est quoi qui prend tout le reste ? window.display() ?
Tu as mesuré ça comment ?

Citer
Après un petit teste perso, créer une texture prends énormément de temps (j'ai tenté une copie de la texture de la sf::RenderTexture pour un petit teste : la consommation du proço a presque doublé). Sa peut peut venir de là, non ?
C'est normal, et cela n'a aucun rapport puisqu'il n'y a aucune copie de texture dans ce code.
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : sf::RenderTexture prends énormément de ressource CPU.
« Réponse #16 le: Juin 27, 2012, 01:02:32 pm »
Comment j'ai mesuré ? Ben je prends la consommation avant moins la consommation après x) . Dans ce code il n'y a aucune copie de texture, mais la RenderTexture elle en créé une, non ?

ps : Si je retire le display(), là je tourne à 99% x) (en même temps normale, j'ai une fenêtre transparente...).

ps2 : Je suis en 64 bits.
« Modifié: Juin 27, 2012, 01:18:17 pm par gaulois94 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::RenderTexture prends énormément de ressource CPU.
« Réponse #17 le: Juin 27, 2012, 01:31:04 pm »
Citer
Dans ce code il n'y a aucune copie de texture, mais la RenderTexture elle en créé une, non ?
Elle la crée au tout début, après elle ne fait que dessiner dedans.

Citer
Si je retire le display(), là je tourne à 99%
Oui, celui-ci tu ne peux pas l'enlever. Et c'est lui qui gère la limite de framerate, donc du coup tu reviens forcément à 100% de CPU si tu ne l'as pas.

Citer
Je suis en 64 bits
Aucune incidence normalement.
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : sf::RenderTexture prends énormément de ressource CPU.
« Réponse #18 le: Juin 27, 2012, 01:49:52 pm »
Arf sa ne va pas m'aider énormément sa x) . Tu pourrais essayé le code chez toi voir si sa vient de mon matériel ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::RenderTexture prends énormément de ressource CPU.
« Réponse #19 le: Juin 27, 2012, 01:58:36 pm »
Oui si tu veux. Peux-tu me remettre le code, mais avec les valeurs/tailles qui produisent directement 38% du CPU chez toi, et en remplaçant le fichier "rectangle.jpg" que je n'ai pas par un sf::Image ?
sf::Image image;
image.create(width, height);
texture.loadFromImage(image);
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : sf::RenderTexture prends énormément de ressource CPU.
« Réponse #20 le: Juin 27, 2012, 02:04:30 pm »
Bien sûr, le voici :

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

int main()
{
        sf::RenderWindow window(sf::VideoMode(800, 600, 32), std::string("teste"));
        sf::RenderTexture renderTexture;
        renderTexture.create(800, 600);
        sf::Image image;
        image.create(200, 85);
        sf::Texture texture;
        texture.loadFromImage(image);
        sf::Sprite sprite(texture);
        window.setFramerateLimit(60);  

        while(window.isOpen())
        {
                window.clear();
                renderTexture.clear(sf::Color::Blue);
                renderTexture.draw(sprite);
                renderTexture.display();
                sf::Sprite renderSprite(renderTexture.getTexture());
                window.draw(renderSprite);
                window.display();
        }
}

Merci d'avance :) .
« Modifié: Juin 27, 2012, 02:27:51 pm par Laurent »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::RenderTexture prends énormément de ressource CPU.
« Réponse #21 le: Juin 27, 2012, 06:04:14 pm »
J'ai testé, aucun souci chez moi. Je m'y attendais un peu :P
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : sf::RenderTexture prends énormément de ressource CPU.
« Réponse #22 le: Juin 27, 2012, 06:15:15 pm »
Sous Windows ou sous linux ? Arf, sa m'embête vraiment que mon CPU soit autant solliciter pour rien x) .

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: sf::RenderTexture prends énormément de ressource CPU.
« Réponse #23 le: Juin 27, 2012, 06:28:05 pm »
Sous Windows.
Laurent Gomila - SFML developer