46
Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.
Pages: « Précédente 1 2 3 [4]
47
Général / Re : [segfault] Appel de RenderWindow::create()
« le: Juin 25, 2012, 11:29:02 pm »
gcc version 4.7.0 <GCC>
et pleins d'autres trucs... !
et pleins d'autres trucs... !
48
Général / [segfault] Appel de RenderWindow::create()
« le: Juin 25, 2012, 05:16:38 pm »
Bonjour,
Je viens de reinstaller Code::Blocks, avec pour compilateur: MinGW ayant GCC 4.7.0 !
J'utilise SFML 2 !
De: http://freefr.dl.sourceforge.net/project/mingw/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe
Mon code compilait très bien avant cette mise à jour...
Maintenant...:
Dans mon projet (C::B) j'ai
Que faut-il faire?
merci, nico
Je viens de reinstaller Code::Blocks, avec pour compilateur: MinGW ayant GCC 4.7.0 !
J'utilise SFML 2 !
De: http://freefr.dl.sourceforge.net/project/mingw/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe
Mon code compilait très bien avant cette mise à jour...
Maintenant...:
Citer
#0 6E182F29 sf::Window::Window(this=0x77af1bd1) (D:\developpement\sfml-master\src\SFML\Window\Window.cpp:47)
#1 00919519 sf::RenderWindow::RenderWindow(this=0x77af1bd1) (D:\developpement\sfml-master\src\SFML\Graphics\RenderWindow.cpp:35)
#2 00402BCC ?? () (??:??)
#3 004010B9 ?? () (??:??)
#4 00401284 ?? () (??:??)
#5 7694339A KERNEL32!BaseCleanupAppcompatCacheSupport() (C:\Windows\syswow64\kernel32.dll:??)
#6 7EFDE000 ?? () (??:??)
#7 77A59EF2 ntdll!RtlpNtSetValueKey() (C:\Windows\system32\ntdll.dll:??)
#8 7EFDE000 ?? () (??:??)
#9 77A59EC5 ntdll!RtlpNtSetValueKey() (C:\Windows\system32\ntdll.dll:??)
#10 0040126C ?? () (??:??)
#11 ?? ?? () (??:??)
Dans mon projet (C::B) j'ai
Citer
link options:
-lsfml-graphics-d
-lsfml-window-d
-lsfml-system-d
-lsfgui
-lopengl32
compile define:
SFML_STATIC
SFGUI_STATIC
Que faut-il faire?
merci, nico
49
Graphique / Suppression de widget sfgui
« le: Juin 14, 2012, 05:55:09 pm »
Bonjour,
Pas sur que ce soit le bon endroit, je tente ma chance quand meme!
Apres avoir fait une petite boite alert (une window, un bouton et un label), j'essaye de la detruire pour liberer la memoire.
J'utilise SFML 2.0 & SFGUI.
Le constructeur, pour voir un peu la bete:
La fonction Destroy ne change que la variable membre "display" à false.
Dans ma boucle graphique, j'ai ceci:
Et Quand j'appuie sur le bouton, he bien le sfg::Window ne disparait pas. Il reste sur l'ecran ! Neanmoins je ne peux plus interagir.
Il doit y avoir un probleme au niveau de Clear, ou Update.
Quelqu'un saurais me gider?
merci, nico
Pas sur que ce soit le bon endroit, je tente ma chance quand meme!
Apres avoir fait une petite boite alert (une window, un bouton et un label), j'essaye de la detruire pour liberer la memoire.
J'utilise SFML 2.0 & SFGUI.
Le constructeur, pour voir un peu la bete:
AlertBox::AlertBox(const std::string& errortitle, const std::string& errortext) :
display(true)
{
// The window
dialog = sfg::Window::Create(sfg::Window::Style::TITLEBAR);
dialog->SetTitle(errortitle);
// The layouter
sfg::Box::Ptr box( sfg::Box::Create( sfg::Box::VERTICAL, 5.0f ) );
// The elements
text = sfg::Label::Create(errortext);
btn = sfg::Button::Create("Ok");
btn->GetSignal(sfg::Widget::OnLeftClick).Connect(&AlertBox::Destroy, this);
box->Pack(text);
box->Pack(btn, false);
dialog->Add(box);
}
display(true)
{
// The window
dialog = sfg::Window::Create(sfg::Window::Style::TITLEBAR);
dialog->SetTitle(errortitle);
// The layouter
sfg::Box::Ptr box( sfg::Box::Create( sfg::Box::VERTICAL, 5.0f ) );
// The elements
text = sfg::Label::Create(errortext);
btn = sfg::Button::Create("Ok");
btn->GetSignal(sfg::Widget::OnLeftClick).Connect(&AlertBox::Destroy, this);
box->Pack(text);
box->Pack(btn, false);
dialog->Add(box);
}
La fonction Destroy ne change que la variable membre "display" à false.
Dans ma boucle graphique, j'ai ceci:
// Boucle sur les boites alert
for(auto itr = m_window->GetPerennials()->List().begin(); itr != m_window->GetPerennials()->List().end(); ++itr)
{
// Si l'objet n'a jamais été dessiné, on l'ajoute au sfg::Desktop
if(itr->second->Display() && !itr->second->Drawn())
{
// La fonction AlertBox::GetDrawable retourne un sfg::Window::Ptr
desktop.Add(itr->second->GetDrawable());
}
else if(!itr->second->Display())
{ // Ceci est quand on vient d'appuyer sur le bouton, et que la fonction Destroy a ete appellee
// On supprime le sfg::Window de sfg::Desktop
desktop.Remove(itr->second->GetDrawable());
}
}
m_window->Clear(); // sf::RenderWindow::Clear();
desktop.Update( clock.restart().asSeconds() );
m_window->RenderGUI(sfgui); // sfg::Display(m_window);
m_window->Render(); // sf::RenderWindow::Display();
for(auto itr = m_window->GetPerennials()->List().begin(); itr != m_window->GetPerennials()->List().end(); ++itr)
{
// Si l'objet n'a jamais été dessiné, on l'ajoute au sfg::Desktop
if(itr->second->Display() && !itr->second->Drawn())
{
// La fonction AlertBox::GetDrawable retourne un sfg::Window::Ptr
desktop.Add(itr->second->GetDrawable());
}
else if(!itr->second->Display())
{ // Ceci est quand on vient d'appuyer sur le bouton, et que la fonction Destroy a ete appellee
// On supprime le sfg::Window de sfg::Desktop
desktop.Remove(itr->second->GetDrawable());
}
}
m_window->Clear(); // sf::RenderWindow::Clear();
desktop.Update( clock.restart().asSeconds() );
m_window->RenderGUI(sfgui); // sfg::Display(m_window);
m_window->Render(); // sf::RenderWindow::Display();
Et Quand j'appuie sur le bouton, he bien le sfg::Window ne disparait pas. Il reste sur l'ecran ! Neanmoins je ne peux plus interagir.
Il doit y avoir un probleme au niveau de Clear, ou Update.
Quelqu'un saurais me gider?
merci, nico
50
Graphique / Re : Affichage d'écrans differents, flash d'un sprite
« le: Juin 11, 2012, 05:33:29 pm »
Merci
Les modos peuvent fermer le topic ^^
Les modos peuvent fermer le topic ^^
51
Graphique / Re : Affichage d'écrans differents, flash d'un sprite
« le: Juin 11, 2012, 03:40:06 pm »
Merci de te réponse laurent, ca marche ^^
Donc a chaque tour de boucle, je refais:
clear()
window.draw() sur chaque objet visible
display()
C'est bien ca?
Donc a chaque tour de boucle, je refais:
clear()
window.draw() sur chaque objet visible
display()
C'est bien ca?
52
Graphique / Re : Affichage d'écrans differents, flash d'un sprite
« le: Juin 11, 2012, 01:19:22 am »
En gros, le ingame::run() c'est ca:
Mais j'ai toujours cet ecran epileptique...
int Ingame::Run(Window* App)
{
while(App->Running()) {
// Event processing.
while(App->GetEvent(event) ) {
//desktop.HandleEvent( event );
// If window is about to be closed, leave program.
if(Window::Closing(event)) {
exit(0);
}
}
std::cout << "in game"<<std::endl;
App->Render();
}
return -1;
}
{
while(App->Running()) {
// Event processing.
while(App->GetEvent(event) ) {
//desktop.HandleEvent( event );
// If window is about to be closed, leave program.
if(Window::Closing(event)) {
exit(0);
}
}
std::cout << "in game"<<std::endl;
App->Render();
}
return -1;
}
Mais j'ai toujours cet ecran epileptique...
53
Graphique / Affichage d'écrans differents, flash d'un sprite
« le: Juin 10, 2012, 12:30:29 am »
Bonjour,
Je me suis mis pour de bon à la sfml apres avoir vu la comparaison sfml vs sdl du createur...
Je fais un jeu en 2D, et je vais avoir besoin de trois ecrans, un splash screen, le menu de connexion et le jeu lui meme, donc pour separer proprement ces ecrans, voici mon main:
L'affichage du Splash se fait tres bien, mais apres quelques secondes (le temps que le splash passe, j'ai du mettre 2secondes) mon ecran commence a flasher l'image qu'il y avait dans le splash.
Voici le code du splash:
Infos:
App->Draw(spr) est un simple template pour faire appel à RenderWindow::draw();
App->Render() est un simple alias pour faire appel à RenderWindow::display();
Donc a la sortie du splash, comme on le voit dans le main, je fais un w->Clear(); (alias pour RenderWindow::clear()) et de plus, l'objet SplashScreen est détruit, donc le sprite & texture devraient logiquement disparaitres....
Mais a ce moment la, mon ecran flash, et si je le regarde plus de 30sec, je fais une crise d'épilepsie !
Quelqu'un a une idée?
nico.
Je me suis mis pour de bon à la sfml apres avoir vu la comparaison sfml vs sdl du createur...
Je fais un jeu en 2D, et je vais avoir besoin de trois ecrans, un splash screen, le menu de connexion et le jeu lui meme, donc pour separer proprement ces ecrans, voici mon main:
int main()
{
Window* w = new Window();
std::vector<Screen*> Screens;
Screens.push_back(new SplashScreen());
//Screens.push_back(new LoginScreen());
Screens.push_back(new Ingame());
int iscreen = 0, temp;
while(iscreen >= 0)
{
// On lance l'affichage
temp = Screens[iscreen]->Run(w);
// On vient de sortir de la boucle de Screen::Run()
// Si temp est different, on met a jour les variables
if(temp != iscreen)
{
delete Screens[iscreen];
w->Clear();
iscreen = temp;
}
}
return EXIT_SUCCESS;
}
{
Window* w = new Window();
std::vector<Screen*> Screens;
Screens.push_back(new SplashScreen());
//Screens.push_back(new LoginScreen());
Screens.push_back(new Ingame());
int iscreen = 0, temp;
while(iscreen >= 0)
{
// On lance l'affichage
temp = Screens[iscreen]->Run(w);
// On vient de sortir de la boucle de Screen::Run()
// Si temp est different, on met a jour les variables
if(temp != iscreen)
{
delete Screens[iscreen];
w->Clear();
iscreen = temp;
}
}
return EXIT_SUCCESS;
}
L'affichage du Splash se fait tres bien, mais apres quelques secondes (le temps que le splash passe, j'ai du mettre 2secondes) mon ecran commence a flasher l'image qu'il y avait dans le splash.
Voici le code du splash:
class SplashScreen: public Screen
{
public:
SplashScreen() {}
~SplashScreen() {}
int Run (Window* App);
private:
};
int SplashScreen::Run(Window* App)
{
sf::Texture splash;
splash.loadFromFile("Data/gui/splash/splashscreen.jpg");
sf::Sprite spr(splash);
sf::Clock clock;
sf::Event event;
clock.restart();
while(App->Running()) {
// Event processing.
while(App->GetEvent(event) ) {
//desktop.HandleEvent( event );
// If window is about to be closed, leave program.
if(Window::Closing(event)) {
exit(0);
}
}
std::cout << "splash screen"<<std::endl;
if(clock.getElapsedTime() > sf::seconds(2)) // On reste sur cet ecran 2secs
{
return 1;
}
App->Draw(spr);
App->Render();
}
return -1;
}
{
public:
SplashScreen() {}
~SplashScreen() {}
int Run (Window* App);
private:
};
int SplashScreen::Run(Window* App)
{
sf::Texture splash;
splash.loadFromFile("Data/gui/splash/splashscreen.jpg");
sf::Sprite spr(splash);
sf::Clock clock;
sf::Event event;
clock.restart();
while(App->Running()) {
// Event processing.
while(App->GetEvent(event) ) {
//desktop.HandleEvent( event );
// If window is about to be closed, leave program.
if(Window::Closing(event)) {
exit(0);
}
}
std::cout << "splash screen"<<std::endl;
if(clock.getElapsedTime() > sf::seconds(2)) // On reste sur cet ecran 2secs
{
return 1;
}
App->Draw(spr);
App->Render();
}
return -1;
}
Infos:
App->Draw(spr) est un simple template pour faire appel à RenderWindow::draw();
App->Render() est un simple alias pour faire appel à RenderWindow::display();
Donc a la sortie du splash, comme on le voit dans le main, je fais un w->Clear(); (alias pour RenderWindow::clear()) et de plus, l'objet SplashScreen est détruit, donc le sprite & texture devraient logiquement disparaitres....
Mais a ce moment la, mon ecran flash, et si je le regarde plus de 30sec, je fais une crise d'épilepsie !
Quelqu'un a une idée?
nico.
Pages: « Précédente 1 2 3 [4]