Bonsoirs,
voila j'écris ce message pour signaller que plus une RenderTexture est grande, plus les ressources CPU utiliser le sont aussi. Pour vous le montrer, voici deux screens :
renderTexture petite (100/50)

sa me prends 10% de mon CPU.
et maintenant le même code, avec comme renderTexture de taille (800/600).

et là ben sa me prends 41% de mon CPU !!! WTF

J'utilises pourtant le même algorithme je vous le rassure

.
Sachez que si je créer un Button, je n'ai que 2% de mon CPU qui est utilisé (il y a tout une surcouche derrière), alors que pour ma Frame, sa me prends quand même jusqu'à 41% !!!
Bon c'est sympa les chiffres, mais on aimerai bien savoir d'où sa vient ce petit monde, et comme je suis gentil, voici comment est fait la gestion de la Frame :
main.cpp
#include "Widget.h"
#include "Button.h"
#include "Window.h"
#include "Frame.h"
#include "equation.h"
#include <iostream>
int main()
{
guiml::Window window(sf::VideoMode(800, 600), "teste");
guiml::Frame frame(&window, sf::FloatRect(0, 0, 800, 600), sf::Color::Blue, guiml::Image(), guiml::Label(NULL, std::string("teste")), sf::Color::Red); //création de la Frame, ayant pour parent window, de position(0, 0) et de taille(800, 600), de fond Bleu sans image derrière de titre "teste" à fond rouge.
while(window.isOpen())
{
window.update(); //là on update la fenêtre, et donc par la même occasion la Frame.
}
return 0;
}
Frame.cpp (Frame hérite de Widget et de RenderTexture).
void Frame::update(std::list<sf::Drawable*> &drawable)
{
if(m_isDrawing) //si on veut dessiner la Frame
{
if(isMoving() && getEventManager()) //si le bouton rouge est sélectionner et que le parent racine est une fenêtre (en gros si Frame est dans une WIndow)
{
sf::Vector2f newMousePosition = getEventManager()->getMousePosition();
setPosition((newMousePosition.x/m_multiplicateMousePos.x)-m_mousePos.x, (newMousePosition.y/m_multiplicateMousePos.y)-m_mousePos.y); //m_multiplicateMousePos est là pour gérer les redimensionnement de la fenêtre (si la fenêtre passe de 800/600 à 1200/1000 par exemple, la souris sera a des positions différentes. Le multiplicate est là pour pallier au problème).
}
for(std::list<Widget*>::iterator it = m_child.begin(); it != m_child.end(); ++it) //On bouge tout les fils en arrière. Normale, quand on donne une position, on le donne relativement à la Frame, mais pour les évènements de la souris, la position doit être relatifs à la fenêtre.
(*it)->move(m_virtualPos.x, m_virtualPos.y);
clear(m_backgroundColor);
std::list<sf::Drawable*> drawableForFrame; //List qui contiendra les drawable que la Frame déssinera (ici c'est le trucs rouge + le titre).
Widget::update(drawableForFrame); //on update le Button (dans le screen, il n'y a qu'un Button : c'est le trucs rouge en haut qui permet de déplacer la Frame).
show(drawableForFrame);
drawable.push_back(&m_spriteFrame); //drawable est la list de Drawable que Window déssinera.
for(std::list<Widget*>::iterator it = m_child.begin(); it != m_child.end(); ++it) //on remet tout le monde en place.
(*it)->move(-m_virtualPos.x, -m_virtualPos.y);
}
}
void Frame::show(std::list<sf::Drawable*> &drawable)
{
for(std::list<sf::Drawable*>::iterator it = drawable.begin(); it != drawable.end(); ++it) //on dessiner ce que contient drawable.
draw(*(*it));
display();
m_spriteFrame.setTexture(getTexture()); //n'oubliez pas que Frame hérites de RenderTexture.
m_spriteFrame.setPosition(sf::Vector2f(m_virtualPos.x, m_virtualPos.y)); Et on place tout à la bonne position.
}
Bon ben voila, je crois que j'ai suffisamment documenté le code pour que vous le compreniez rapidement

. J'aimerai donc savoir pourquoi plus la taille de la Frame augmente, plus les ressources CPU sont élevées.
Merci d'avance

.