• [^] # Re: Limiter l'importance du choix

    Posté par . En réponse au journal SDL2 ou SFML2 ou ... ?. Évalué à 5.

    Il ne s'agit pas que de faire l'abstraction graphique, il faut savoir ce qui se passe dans la boucle et avoir une maîtrise du temps que ne permettent pas, à mon avis, les toolkits généralistes.

    Dans la theorie, oui. Dans la pratique, une main loop bien foutue te fournis un bon niveau d'abstraction et te fournit des trucs comme le support des thread ou le reseau sans impacter les performances de ton rendu. Elles font de plus tout pour avoir 60fps et ne pas dropper de frame durant les animations. J'en reviens la encore, mais les jeux commencent tous par une petite main loop simple, puis avec le temps, ca tourne mal et il n'y a pas de refactoring... Et finalement, ce qui etait un avantage devient un inconvenient ! Probleme de perf, perte de stabilite dans le frame rate, blocage lors d'IO, ...

    Mon but n'est pas de faire un moteur de rendu 2D mais de faire un jeu. Dans SDL et SFML, tout est disponible pour faire le rendu, je n'ai qu'à indiquer où mettre les objets, ce qui me semble être le minimum d'intéraction pour un jeu.

    Tu viens juste de demontrer mon point precedent. Si tu utilises OpenGL ou OpenGL ES pour faire ton rendu, l'ordre dans lequel tu vas envoyer tes ordres au GPU est tres important. Il faut minimiser les changements de texture et de shader par exemple. De plus, certaine operation avec le GPU peuve bloquer ta boucle principal et il vaut mieux les executer depuis un thread (si ton driver en est capable). Si tu as un backend logiciel, il faut en profiter pour faire un delta et ne redessiner que ce qui a changer a l'ecran. Tu peux merger des layers qui ne changent pas entre eux pour diminuer la bande passante memoire consommer et avoir un rendu plus rapide. Juste des trucs de base que te fournirons des moteurs de rendu 2d que tu trouveras necessaire quand ton projet prendra de l'empleur.

    À mon avis, tu sous-estimes la SDL et SFML et tu surestimes les EFL pour les jeux. Montre-moi comment charger une texture dans la mémoire graphique avec les EFL (parce que j'ai cherché 5 minutes, j'ai pas trouvé, c'est une fonctionnalité de base dans SDL2 et SFML2), et je reconsidérerai les EFL.

    o = evas_object_image_add(evas);
    evas_object_image_file_set(o, "monimage.png", NULL);
    evas_object_image_preload(o, EINA_FALSE);

    Done et le chargement se faira meme de maniere asynchrone te laissant la possibilite de faire un autre truc dans ta main loop. C'est le meme code pour tous les backend et toutes les plate-formes. Celle qui n'aurait pas de support des threads, fairont le chargement juste de maniere synchrone. Enfin tu noteras que tu ne fais que gerer des objets et que c'est le scene graph qui va decider comment gerer les pixels a l'ecran au final.

    Bon par contre, niveau doc, on est un peu lege. Tu trouveras des info principalements dans le doxygen des EFL et de Elementary: https://build.enlightenment.org/job/nightly_efl_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/index.html et https://build.enlightenment.org/job/nightly_elm_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/index.html .