Bonsoir à tous
Je voudrais m'essayer à la 2d.
J'ai déjà fait une recherche sur le net, j'ai vu que la SMFL était un peu mieux que la SDL mais je ne suis pas convaincu. Si je ne me trompe pas on peut faire de la 3D avec la SDL et OpenGL non ? Pareil pour la SMFL ?
voila voila juste pour avoir 2-3 avis rapides sinon tant pis laissez couler
Merci !
si le but est de faire de la 3d, il n'y a pas de difference importante entre la SFML et la SDL.
Comme godrik dit, si la finalité c'est pour toi faire de la 3D, ça n'aurai pas vraiment d'importance. Tu utilisera SFML ou SDL pour gérer les fenêtres, les touches, etc.
Si c'est pour faire de la 2D, alors là c'est plus spécifique.
"J'ai déjà fait une recherche sur le net, j'ai vu que la SMFL était un peu mieux que la SDL"
Attention à cet argument, il était utilisé sur les anciennes version de SFML et SDL.
Il faut savoir que la version récente de SDL, la 2.0 a ajouté pas mal de fonctionnalités au niveau des cartes graphiques.
J'ai vu certaines personnes dire même que SDL était devenu un bon concurrent à SFML.
Je n'ai pas une grande connaissance de SFML, mais de ce que je sais je peux t'aider à comparer :
Les points communs de SDL et SFML :
Multi-plateforme
Multi-langages
Multi-media (tu as des fonctionnalités autres que le graphisme, comme le son, etc).
Différence :
SDL est écrit en C
SFML en C++
SDL a des addons non négligeables comme gestion des polices ou des images autres que du BMP
SDML a ce genre de fonction regroupée directement dans sa bibliothèque
Voilà voilà, tu as mon avis, garde à l'esprit que j'ai principalement fait du SDL, et je suis satisfaire de cette biblio. Je me mettrai à SFML un jour, ça serait bien d'avoir l'avis de quelqu'un qui a utilisé SFML.
J'utilise beaucoup la SFML, ainsi que SFGUI, au quotidien dans des projets pro comme perso. J'ai cependant très peu d'expérience avec SDL, et donc pas vraiment de point de comparaison.
Mais bon, avec moi c'est tout vu: En C++, entre une bibliothèque C et une bibliothèque C++ équivalentes, la bibliothèque C++ me parait le choix évident. Il ne me viendrait pas plus à l'esprit d'utiliser une lib' Python en C++ ou inversement. J'exagère un peu, mais je me retrouve dans les cas toujours à réaliser mon propre wrapper C++ pour toutes les fonctionnalités que j'utilise.
La sfml est dispo' en plein de langage, comme le C le C# (pour les portages fait par le créateur de la sfml) et le java/python etc pour des portages fait par des personnes extérieur.
La sfml permet de faire des programmes pour Windows/mac/Linux et (en bêta actuellement, mais possible quand même) ios et Android.
Après côté point noir c'est peut être un peu plus bugé/moins stable que sfml, mais c'est en général corrigeable assez facilement pour la plupart (compiler directement depuis les sources pour avec un truc plus a jour que ce qui est disponible sur le site, voir juste compiler en statique (pour régler les problème lier au son qu'il y a actuellement surtout, je sais pas si ça règle d'autre truc)).
Enfin ca reste un truc assez peu bugé quand même, et c'est en général rapidement corrigé quand c'est signalé alors bon.
Ok merci beaucoup pour vos avis ! Ya pas énormément de mieux ou moins bien et je reste indécis alors je crois que je vais essayer les deux.
encore merci ![]()
Juste un petit up question technique si quelqu'un sait, ya une restriction de configuration pour SDL 2.x et SFML 2.x avec de la 3D éventuelle ? Pour savoir avant de me lancer pleinement.
Intel Core Duo L2400 1.66GHz (1.2V)
RAM: 512MB DDR2 SDRAM (667MHz) + 2g
Screen Size: 12.1″
Screen Resolution: XGA 1024 x 768
Graphics: Intel Media Accelerator 950
Ca va coincer au niveau d'openGL si je me trompe pas ? pour la dernière version :x
(J'aime bien coder avec mon vieux pc portable ![]()
Essaye et tu verras.
je veux bien mais je bloque à l'installation de la SFML, j'ai essayé d'installer la lib manuellement puis avec apt-get mais ça ne fonctionne pour l'instant pas donc si jamais quelqu'un qui passait par là avait eu la réponse ça m'eut été bénéfique c'est tout ![]()
C'est-à-dire "ça ne fonctionne pas" ? Message d'erreur lors de l'installation, le compileur trouve pas la lib ?
Et bien j'ai essayé d'abord ici http://www.sfml-dev.org/tutorials/2.1/start-linux-fr.php
J'ai fait apt-get tout ça la première solution j'ai essayé l'exemple ça ne fonctionnait pas avec une liste d'erreur
error: `Default' is not a member of `sf::Style'|
error: 'class sf::RenderWindow' has no member named 'display'|
error: 'class sf::RenderWindow' has no member named 'isOpen'|
error: 'class sf::RenderWindow' has no member named 'display'|
error: 'class sf::RenderWindow' has no member named 'pollEvent'|
error: 'class sf::Event' has no member named 'type'|
error: 'class sf::RenderWindow' has no member named 'close'|
J'ai essayé manuellement j'ai link la lib tout ça et j'ai maintenant comme erreur
"error while loading shared libraries: libsfml-audio.so.1.deb3: cannot open shared object file: No such file or directory"
Sous debian 7 j'ai link la SFML 2.1
Enfin voila j'aurais bien voulu corriger ça avant d'aller travailler demain puisque j'ai des creux où j'aurais pu commencer mais tant pis, vais me coucher, si jamais quelqu'un a quelque chose à proposer j'essaye vite fait demain matin
lemoino -> Ta première volée d'erreur, ça ressemble à du code SFML 2 avec les headers de la SFML 1.6.
La deuxième tu as apparemment égaré tes affaires, difficile de savoir ce que tu as fait exactement.
Pour le plus sous contrôle/stable, la meilleure solution est pour moi de télécharger les sources depuis le git, générer un makefile avec cmake, compiler ça pour ton environnement et linker explicitement les bibliothèques générées lors de la compilation de ton programme.
Fiouuu, je suis perdu avec toutes ces erreurs
Merci pour ta réponse Mjonir
Alors, je conaissais cmake que de nom, donc je viens de l'installer tout ça mais je suis pas sûr de bien l'avoir utilisé
Sinon j'ai ressayé le tuto http://www.sfml-dev.org/tutorials/2.0/start-linux-fr.php en compilant sans IDE :
g++ -c main.cpp -I /home/pierro/C++/Librairies/SFML-2.1/include
g++ main.o -o sfml-app -L/home/pierro/C++/Librairies/SFML-2.1/lib -lsfml-graphics -lsfml-window -lsfml-system
./sfml-app => ./sfml-app: error while loading shared libraries: libsfml-graphics.so.2: cannot open shared object file: No such file or directory
voici le makefile sinon (si c'est bien ça que je dois link - à supposer qu'il soit bon)
default_target: all
.PHONY : default_target
============================
.SUFFIXES:
SUFFIXES =
.SUFFIXES: .hpux_make_needs_suffix_list
$(VERBOSE).SILENT:
cmake_force:
.PHONY : cmake_force
============================
SHELL = /bin/sh
CMAKE_COMMAND = /usr/bin/cmake
RM = /usr/bin/cmake -E remove -f
EQUALS = =
CMAKE_SOURCE_DIR = /home/pierro/C++/StartWithSFML
CMAKE_BINARY_DIR = /home/pierro/C++/StartWithSFML
============================
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running interactive CMake command-line interface..."
/usr/bin/cmake -i .
.PHONY : edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/pierro/C++/StartWithSFML/CMakeFiles /home/pierro/C++/StartWithSFML/CMakeFiles/progress
.marks
$(MAKE) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pierro/C++/StartWithSFML/CMakeFiles 0
.PHONY : all
clean:
$(MAKE) -f CMakeFiles/Makefile2 clean
.PHONY : clean
clean/fast: clean
.PHONY : clean/fast
preinstall: all
$(MAKE) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall
preinstall/fast:
$(MAKE) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast
depend:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
============================
bin/Debug/StartWithSFML: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 bin/Debug/StartWithSFML
.PHONY : bin/Debug/StartWithSFML
bin/Debug/StartWithSFML/fast:
$(MAKE) -f CMakeFiles/bin/Debug/StartWithSFML.dir/build.make CMakeFiles/bin/Debug/StartWithSFML.dir/build
.PHONY : bin/Debug/StartWithSFML/fast
main.o: main.cpp.o
.PHONY : main.o
main.cpp.o:
$(MAKE) -f CMakeFiles/bin/Debug/StartWithSFML.dir/build.make CMakeFiles/bin/Debug/StartWithSFML.dir/main.cpp.o
.PHONY : main.cpp.o
main.i: main.cpp.i
.PHONY : main.i
main.cpp.i:
$(MAKE) -f CMakeFiles/bin/Debug/StartWithSFML.dir/build.make CMakeFiles/bin/Debug/StartWithSFML.dir/main.cpp.i
.PHONY : main.cpp.i
main.s: main.cpp.s
.PHONY : main.s
main.cpp.s:
$(MAKE) -f CMakeFiles/bin/Debug/StartWithSFML.dir/build.make CMakeFiles/bin/Debug/StartWithSFML.dir/main.cpp.s
.PHONY : main.cpp.s
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... bin/Debug/StartWithSFML"
@echo "... edit_cache"
@echo "... rebuild_cache"
@echo "... main.o"
@echo "... main.i"
@echo "... main.s"
.PHONY : help
============================
cmake_check_build_system:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
"./sfml-app => ./sfml-app: error while loading shared libraries: libsfml-graphics.so.2: cannot open shared object file: No such file or directory"
Es-tu sûr que dans "/home/pierro/C++/Librairies/SFML-2.1/lib" se trouvent bien les bibliothèques SFML compilées?
Le Makefile sorti de Cmake personne ne va s'amuser à le lire :P
Si tu l'as fait tourner et que tu n'as pas eu d'erreur, tu devrais avoir obtenu les bibliothèques compilées.
As-tu bien suivi ce tutoriel: http://www.sfml-dev.org/tutorials/2.1/compile-with-cmake-fr.php ?
Oui dans "/home/pierro/C++/Librairies/SFML-2.1/lib" j'ai bien ma SFML, j'ai même la 2.0 et la 1.6 ou cas ou ça ne fonctionnait pas sous mon vieux PC (la SFML qu'on trouve à cette adresse http://www.sfml-dev.org/download/sfml/2.1/index-fr.php)
Sinon heu, j'ai suivi ton lien j'ai fait tout ça j'ai dû m'arrêter avant cmake-gui qui est utlisé puisque ça ne fonctionne pas (en tout cas chez moi) donc j'ai utilisé cmake -i qui me conduit à ces erreurs quand je fais make :
make
Scanning dependencies of target StartWithSFML
[100%] Building CXX object CMakeFiles/bin/Debug/StartWithSFML.dir/main.cpp.o
In function ‘int main()’:
error: ‘CircleShape’ is not a member of ‘sf’
error: expected ‘;’ before ‘shape’
error: ‘shape’ was not declared in this scope
error: ‘class sf::RenderWindow’ has no member named ‘isOpen’
error: ‘class sf::RenderWindow’ has no member named ‘pollEvent’
error: ‘class sf::Event’ has no member named ‘type’
error: ‘class sf::RenderWindow’ has no member named ‘close’
error: ‘class sf::RenderWindow’ has no member named ‘clear’
error: ‘class sf::RenderWindow’ has no member named ‘draw’
error: ‘class sf::RenderWindow’ has no member named ‘display’
make[2]: *** [CMakeFiles/bin/Debug/StartWithSFML.dir/main.cpp.o
]
Erreur 1
make[1]: *** [CMakeFiles/bin/Debug/StartWithSFML.dir/all] Erreur 2
make: *** [all] Erreur 2
enfin voila ça commence à pas mal s'embrouiller dans ma tête entre la sfml et cmake que je ne sais pas si j'utilise bien cmake ou non alors je crois que je vais revenir à mon cher petit c::b
Tu avais parlé du code SFML 2 avec les headers de la SFML 1.6 mais pourtant j'ai suivi ce qui est indiqué ici
donc comme cela est-il possible ? Il y a une différence de header entre la 2.0 et 2.1 ? Que devrais-je remplacer ?
pour rappel j'ai ça en erreur avec l'installation de base (http://www.sfml-dev.org/tutorials/2.0/start-linux
-fr.php)
In function ‘int main()’:|
error: ‘CircleShape’ was not declared in this scope|
error: expected ‘;’ before ‘shape’|
error: ‘shape’ was not declared in this scope|
error: ‘class sf::RenderWindow’ has no member named ‘isOpen’|
error: ‘class sf::RenderWindow’ has no member named ‘pollEvent’|
error: ‘class sf::Event’ has no member named ‘type’|
error: ‘class sf::RenderWindow’ has no member named ‘close’|
error: ‘class sf::RenderWindow’ has no member named ‘clear’|
error: ‘class sf::RenderWindow’ has no member named ‘draw’|
error: ‘class sf::RenderWindow’ has no member named ‘display’|
||=== Build finished: 10 errors, 0 warnings ===|
Voila ![]()
"la SFML qu'on trouve à cette adresse" -> Attention à pas tout mélanger! Tu peux pas mettre les headers de la 2.1 avec les binaires de la 2.0! Faut aussi s'assurer que le binaire est compatible avec ton système, mais ça c'est toi qui doit savoir. C'est en partie pour pas s'embrouiller avec tout ça que je préfère compiler d'office.
"je vais revenir à mon cher petit c::b" -> Cmake permet de générer des projets c::b (j'ai testé, ça marche très bien), mais tu devras quand même utiliser cmale pour ça. C'est un outil vraiment pratique au final, ça doit pas te faire peur. Je ne l'ai jamais utilisé en console par contre, donc je te conseillerais de voir ce qui ne vas pas au niveau de la GUI?
"donc comme cela est-il possible ?" -> Ça c'est toi qui sait comment est configuré ton projet, où sont les headers que tu as installé, etc :P
Personnellement je n'installe rien globalement sur le système. Chaque projet (ou groupe de projets) a un dossier includes/SFML et un dossier lib/SFML dans lesquels se trouvent respectivement les headers et binaires appropriés. Comme ça le système reste propre et pas de risque de confusion.
"Il y a une différence de header entre la 2.0 et 2.1 ? Que devrais-je remplacer ?" -> J'avais parlé de ça car entre 1.6 et 2.0 la convention de nommage des méthodes a changé (plus de majuscules aux méthodes), ce qui pourrait typiquement provoquer les erreurs que tu cites. Il y a évidemment des différences entre la 2.0 et la 2.1, et je suppose que ça concerne la majorité des headers, remplace tout si nécessaire.
Olalalalalala
Déjà je me corrige je pour ce que j'ai installé en "premier"
j'ai juste fait apt-get install libsfml-dev
et puis j'ai exécuté le code proposé par http://www.sfml-dev.org/tutorials/2.0/start-linux-fr.php
j'ai rien fait d'autre j'ai rien inclus d'autre, donc j'ai pas téléchargé la 2.1 directement
Donc si je comprends bien quand je fais apt-get install libsfml-dev
ça m'installe la 2.1 et le code proposé à http://www.sfml-dev.org/tutorials/2.0/start-linux-fr.php c'est de la 1.6 ou 2.0 c'est ça ?
Ensuite pour cmake c'est simple je fais
$ cmake => ça marche tout ça
$ cmake-gui => bash : commande introuvable
Donc là j'ai fait apt-get remove libsfml-dev
donc là je suis dans
root@localhost:/home/pierro/C++/StartWithSFML# ls -l
j'ai
drwxrwxrwx 7 pierro pierro 4096 mars 31 2010 SFML-1.6
drwxr-xr-x 5 pierro pierro 4096 avril 11 2013 SFML-2.0
drwxr-xr-x 5 pierro pierro 4096 juil. 26 2013 SFML-2.1
je vais dans
root@localhost:/home/pierro/C++/StartWithSFML# cd SFML-2.1
root@localhost:/home/pierro/C++/StartWithSFML/SFML
-2.1#
ls -l
total 12
drwxr-xr-x 3 pierro pierro 4096 mars 30 22:53 include
drwxr-xr-x 3 pierro pierro 4096 juil. 26 2013 lib
drwxr-xr-x 3 pierro pierro 4096 juil. 26 2013 share
root@localhost:/home/pierro/C++/StartWithSFML/SFML
-2.1#
cd include/SFML
root@localhost:/home/pierro/C++/StartWithSFML/SFML
-2.1/include/SFML#
ls -l
total 52
drwxr-xr-x 2 pierro pierro 4096 juil. 26 2013 Audio
-rw-r--r-- 1 pierro pierro 1899 juil. 26 2013 Audio.hpp
-rw-r--r-- 1 pierro pierro 4777 juil. 26 2013 Config.hpp
drwxr-xr-x 2 pierro pierro 4096 juil. 26 2013 Graphics
-rw-r--r-- 1 pierro pierro 2393 juil. 26 2013 Graphics.hpp
drwxr-xr-x 2 pierro pierro 4096 juil. 26 2013 Network
-rw-r--r-- 1 pierro pierro 1958 juil. 26 2013 Network.hpp
-rw-r--r-- 1 pierro pierro 2092 juil. 26 2013 OpenGL.hpp
drwxr-xr-x 2 pierro pierro 4096 juil. 26 2013 System
-rw-r--r-- 1 pierro pierro 2186 juil. 26 2013 System.hpp
drwxr-xr-x 2 pierro pierro 4096 juil. 26 2013 Window
-rw-r--r-- 1 pierro pierro 1991 juil. 26 2013 Window.hpp
On est bien d'accord que ces #!&^%@ sont là
Ensuite je link manuellement dans code block => Linker settings, je link tous les .so
Ensuite dans Search Directories => je link le fichier SFML avec les headers
Je compile
et
error: SFML/Graphics.hpp: Aucun fichier ou dossier de ce type|
||=== Build finished: 1 errors, 0 warnings ===|
Où foire-je ?
"Donc si je comprends bien quand je fais apt-get install libsfml-dev
ça m'installe la 2.1" -> Je ne sais pas exactement quoi ni où ça a été installé, mais d'après les erreurs, à vue de pif, j'aurais dit que ça t'a installé la SFML 1.6, l'exemple que tu essayes de faire tourner n'étant valable que pour SFML 2 et plus.
"cmake-gui => bash : commande introuvable" -> Ben, si tu installais cmake-gui? :P
"error: SFML/Graphics.hpp: Aucun fichier ou dossier de ce type" -> As-tu pensé à inclure ton dossier "/home/pierro/C++/StartWithSFML" lors de la compilation? (-I avec gcc/clang, Project -> Build-options -> Search directories -> compiler avec C::B)
Moi je pigeais le problème à l'envers, pourquoi il m'installe la 1.6 ce sacripant ![]()
Donc ok je pars de ça, que ça m'installe la 1.6 mais que ça fonctionne malgré que ça ne soit pas la bonne version.
A propos de cmake-gui moi je pensais innocemment qu'il l'installait automatiquement, que ça faisait parti intégrante du programme ![]()
j'avoue ne pas encore avoir certains automatismes de bases sous linux ayant quitté windows depuis peu, la transition est parfois difficile. Enfin bref du coup ouè j'ai cmake-gui je vais regarder demain pour ça car si je recommence à faire du cmake ce soir mon cerveau va tomber comme un flan sur du carrelage
Sinon quand je fais apt-get install sfml-dev ça s'installe dans /usr/include/SFML
N'y a t'il pas une quelconque commande pour connaitre la version installée ?
Bon, là j'ai déplacer mon dossier SFML-2.1 que j'avais téléchargé et échangé avec celui qui était téléchargé avec apt-get install sfml-dev
histoire de faire genre à linux oui oui regarde c'est bien celui que t'as eu en ligne de commande, mais bon il est pas dupe
error: SFML/Graphics.hpp: Aucun fichier ou dossier de ce type
Donc voila je réessaierai ça demain car là................................
Hmm bon voila j'ai compilé avec CMake (je crois hmm) et j'ai exécuté mon programme qui m'a offert
error while loading shared libraries: libsfml-audio.so.2: cannot open shared object file: No such file or directory
Des recommandations ? :x