Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

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.


Messages - Eho

Pages: [1]
1
C'est juste quand au cours celui d'open classroom est très bien.
pour apprendre Qt, mais pas pour apprendre le C++ moderne.

2
Graphique / Re : Charger les sprites dans la carte graphique
« le: Août 10, 2014, 11:10:28 pm »
Bonjour

Relis attentivement ceci : http://www.sfml-dev.org/tutorials/2.1/graphics-sprite-fr.php
Grosso modo, les textures sont bien dans la mémoire de la carte graphique et les sprites ne font que les référencer. L'équivalent de la texture qui est dans la RAM est une image.

Pour ce qui est des performances, si tu peux nous montrer un code minimal qui reproduit le problème, on pourra t'aider.

3
Général / Re : Installation
« le: Août 06, 2014, 07:07:05 am »

4
Discussions générales / Re : SFMLEasy - Compiler facillement
« le: Juillet 30, 2014, 02:19:20 pm »
Dans download, il y a le dossier SFML-master qui contient les sources de la SFML
C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master\download\SFML-master
(et l'archive master.zip)

5
Discussions générales / Re : SFMLEasy - Compiler facillement
« le: Juillet 30, 2014, 01:48:29 pm »
Mon CMake (version 3.0.0) fonctionne bien (cmake .. "-GMinGW Makefiles" ).
J'ai testé dans une VirtualBox avec Windows 7 comme système invité et j'ai pas installé d'antivirus.

Sinon, pour savoir quelles explications il faut rajouter, demande à un utilisateur lambda (ça peut être qun ami ou uelqu'un de ta famille) de tester l'installation et l'utilisation de ton programme sans l'aider (juste en regardant attentivement ce qu'il fait). Ce test doit se faire une nouvelle installation de Windows (sans CMake et sans MinGW).

Edit: J'avais pas lu les lignes (en remontant) avant « C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Program Files/CMake/bin/" »
(C'est bizarre de refaire un set du PATH après avoir appelé CMake)

6
Discussions générales / Re : SFMLEasy - Compiler facillement
« le: Juillet 30, 2014, 10:45:47 am »
Bonjour

J'ai testé par curiosité :
- ça manque un peu d'explication pour avoir de vrais utilisateurs
- après le lancement, mon navigateur m'a demandé de télécharger Java
- Java a essayé de m'installer une barre « Ask » pour Mozilla Firefox :(
- J'ai un peu galéré pour donner le chemin du compilateur
  Lorsqu'il y a une erreur, on n'a pas le temps de la lire :s
  (Finalement dans mon cas, le chemin était C:\Program Files\mingw-builds\x32-4.8.1-posix-dwarf-rev5\mingw32)
- Pour le CMake, ça a été plus facile (C:\Program Files\CMake)
- La version de la SFML est le master de GitHub, il faudrait peut-être donner le choix dans la version
- Au final j'ai une erreur, j'ai l'impression que CMake n'a pas été utilisé.

Pour installer la SFML 2.1, j'utilise généralement « Install Project » qui est multiplateforme et écrit en Python 2.7.
Mais dans ce programme là, il y a aussi une phase de configuration par l'utilisateur qui pourrait être automatisé ou un peu plus guidé.

Voici le log :
+ -------------------------------------------------------- +
+ SFMLEasy - Library compiler                              +
+ Version : 0.1                                            +
+ AUTHOR: Magras Steve                                     +
+ GITHUB: https://github.com/smagras/                      +
+ -------------------------------------------------------- +


[HELP]

easy config : Config your paths and download what you don't have.
easy install : After all configurations you can compile your SFML.
quit : Stop the application.


[CONFIGURATION]

# Define your compiler path [default: C:/MinGW/]:
user > C:\Program Files\mingw-builds\x32-4.8.1-posix-dwarf-rev5\mingw32
MinGW dir is now C:/Program Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw3
2/

# Define your cmake path [default: Empty]('auto' for download the application):

user > C:\Program Files\CMake
Cmake dir is now C:/Program Files/CMake/

# Define your sfml source path [default: Empty]('auto' for download the applicat
ion):
user > auto
Donwloading https://github.com/SFML/SFML/archive/master.zip...
SFML dir is now C:/Users/Eo/Downloads/SFMLEasy-SFML-master/SFMLEasy-SFML-master/
download/SFML-master/

SFMLEasy is correctly configured.

user > easy install

[COMPILATION]

INFO: Your antivirus can make error occured, disabled if it's neccessaries.
[PRESS ENTER TO CONTINUE]

File is deleted : C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master\download
\SFML-master
Unzip download/master.zip...
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cd C:/Users/Eo/Downloads/S
FMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw32/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/CMake/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cmake -G "MinGW Makefiles"
 -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=TRUE C:/Users/Eo/Downloads/SFM
LEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>
Le chemin d'accès spécifié est introuvable.
CMake Error: The source directory "C:/Users/Eo/Downloads/SFMLEasy-SFML-master/SF
MLEasy-SFML-master/download/SFML-master" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cd C:/Users/Eo/Downloads/S
FMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw32/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/CMake/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>mingw32-make

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>
Le chemin d'accès spécifié est introuvable.
mingw32-make: *** No targets specified and no makefile found.  Stop.
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cd C:/Users/Eo/Downloads/S
FMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw32/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/CMake/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cmake -G "MinGW Makefiles"
 -D CMAKE_BUILD_TYPE=Debug -D BUILD_SHARED_LIBS=TRUE C:/Users/Eo/Downloads/SFMLE
asy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>
Le chemin d'accès spécifié est introuvable.
CMake Error: The source directory "C:/Users/Eo/Downloads/SFMLEasy-SFML-master/SF
MLEasy-SFML-master/download/SFML-master" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cd C:/Users/Eo/Downloads/S
FMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw32/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/CMake/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>mingw32-make

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>
Le chemin d'accès spécifié est introuvable.
mingw32-make: *** No targets specified and no makefile found.  Stop.
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cd C:/Users/Eo/Downloads/S
FMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw32/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/CMake/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cmake -G "MinGW Makefiles"
 -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=FALSE C:/Users/Eo/Downloads/SF
MLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>
Le chemin d'accès spécifié est introuvable.
CMake Error: The source directory "C:/Users/Eo/Downloads/SFMLEasy-SFML-master/SF
MLEasy-SFML-master/download/SFML-master" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cd C:/Users/Eo/Downloads/S
FMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw32/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/CMake/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>mingw32-make

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>
Le chemin d'accès spécifié est introuvable.
mingw32-make: *** No targets specified and no makefile found.  Stop.
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cd C:/Users/Eo/Downloads/S
FMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw32/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/CMake/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cmake -G "MinGW Makefiles"
 -D CMAKE_BUILD_TYPE=Debug -D BUILD_SHARED_LIBS=FALSE C:/Users/Eo/Downloads/SFML
Easy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>
Le chemin d'accès spécifié est introuvable.
CMake Error: The source directory "C:/Users/Eo/Downloads/SFMLEasy-SFML-master/SF
MLEasy-SFML-master/download/SFML-master" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>cd C:/Users/Eo/Downloads/S
FMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-master/

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/mingw-builds/x32-4.8.1-posix-dwarf-rev5/mingw32/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>set PATH=%PATH%;"C:/Progra
m Files/CMake/bin/"

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>mingw32-make

C:\Users\Eo\Downloads\SFMLEasy-master\SFMLEasy-master>
Le chemin d'accès spécifié est introuvable.
mingw32-make: *** No targets specified and no makefile found.  Stop.

SFML is compile and you can use it:
C:/Users/Eo/Downloads/SFMLEasy-SFML-master/SFMLEasy-SFML-master/download/SFML-ma
ster/
user >

7
Tu mets ton image dans une sf::Texture et tu l'affiches via un sf::Sprite.
sf::Sprite a une méthode .setScale()

Avec un tout petit peu de mathématiques, tu calculeras les bon facteurs de scale.

Ta sf::RenderWindow est de la même taille que la résolution maximale de l'écran (cas le plus logique).
Si oui, essayer de  changer la résolution de la fenêtre et / ou de l'écran n'est pas une bonne solution (lenteur, écran qui s'éteint et se rallume, scintillement, ...).

8
Bonjour

Si c'est en pixels, sur un écran :
sf::VideoMode::getDesktopMode().width
sf::VideoMode::getDesktopMode().height
http://sfml-dev.org/documentation/2.1-fr/classsf_1_1VideoMode.php

La taille de ta fenêtre doit correspondre à ça ?

Pour les «bits per pixel», il s'agit de la profondeur des couleurs. Tu peux ignorer cet attribut.

9
Audio / Re : Conteneurs de musiques
« le: Juillet 01, 2014, 03:23:38 pm »
Et c'est un bon conseil ;)

Il faut utiliser la méthode .at() (C++11) au lieu de l'opérateur [] pour éviter la création involontaire.
Mais lorsque tu veux créer un objet, il faut bien sûr utiliser l'opérateur [].

10
Audio / Re : Conteneurs de musiques
« le: Juillet 01, 2014, 07:05:20 am »
Bonjour

La méthode .at() de std::map, permet uniquement d'accéder à l'élément.
Si l'élément n'existe pas, tu reçois une exception std::out_of_range.

Si tu veux créer un élément, tu utilises la méthode .emplace(), .insert() ou tout simplement l'opérateur [].
mMusics[filename]; // Création de la musique
Ensuite tu peux y accéder avec la méthode .at() comme dans le reste de ton programme.

11
Graphique / Re : Créer une sf::Texture dans un std::thread
« le: Juin 29, 2014, 10:28:42 pm »
Pourtant avec le mutex, le problème n'apparaît pas, même si je mets ce code dans le thread (compilé en -O0)
while (1)
{
        mutex.lock();
        sf::Texture texture_thread;
        mutex.unlock();
}

Si c'est un problème uniquement lié à X11, je vais appeler la fonction XInitThreads(); sur cette plate-forme.

Merci :)

12
Graphique / [Résolu] Créer une sf::Texture dans un std::thread
« le: Juin 29, 2014, 02:16:58 pm »
Bonjour

En cherchant à faire de la sérialisation bête et méchante, j'ai voulu créer une sf::Texture dans un thread (std::thread).

J'obtiens l'erreur suivante (Debian GNU/Linux, SFML 2.1)
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
main_sfml: ../../src/xcb_io.c:179: dequeue_pending_request: Assertion `!xcb_xlib_unknown_req_in_deq' failed.
Abandon

J'ai suivi ce que le message d'erreur suggére (cela corrige bien l'erreur) mais je ne souhaite pas avoir une solution pour X11 uniquement.

J'ai placé un mutex pour créer la texture et le rendu d'une frame :
// g++ -Wall -Wextra -Wconversion -Wsign-conversion -std=c++11 -pedantic -fopenmp -lsfml-window -lsfml-graphics -lsfml-system main_sfml.cpp -o main_sfml && ./main_sfml
// g++ -Wall -Wextra -Wconversion -Wsign-conversion -std=c++98 -pedantic -fopenmp -lsfml-window -lsfml-graphics -lsfml-system main_sfml.cpp -o main_sfml && ./main_sfml


#include <vector>
#include <thread>
#include <mutex>

#include <SFML/Graphics.hpp>

//#include <X11/Xlib.h>


int main()
{
        //XInitThreads();
       
        sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
       
        sf::Image image; image.create(200, 200, sf::Color::White);
       
        std::vector<sf::Sprite> sprites;
       
        std::mutex mutex;
       
        std::thread t
        (
                [&]() -> void
                {
                        std::this_thread::sleep_for(std::chrono::seconds(1));
                       
                        mutex.lock();
                        sf::Texture texture_thread;
                        mutex.unlock();
                       
                        texture_thread.loadFromImage(image);
                       
                        sprites.emplace_back(texture_thread);
                }
        );
       
        while (window.isOpen())
        {
                mutex.lock();
               
                {
                        sf::Event event;
                       
                        while (window.pollEvent(event))
                        {
                                if (event.type == sf::Event::Closed) { window.close(); }
                        }
                }
               
                window.clear();
               
                for (auto const & sprite : sprites)
                {
                        window.draw(sprite);
                }
               
                window.display();
               
                mutex.unlock();
        }
       
        t.join();
       
        return 0;
}
 

Est-ce une bonne solution (je n'ai pas encore testé sous Windows et OS X) ?
Qu'elles sont les autres solutions possibles (à part «ne pas utiliser de thread» et «créer les textures à l'avance») ?

Merci d'avance.

Pages: [1]