1

yop,

Je rencontre quelques difficultés avec les libs comme SDL ou SFML. Oui, ce sont de libs simples, mais je comprends pas ce qu'il y a derrière, j'ai donc du mal à comprendre comment les utiliser correctement.

Pour situer un peu les choses :
- je me situe dans un contexte de jeu 2D, type plateforme, où on affiche un forêt des sprites carrés avec un perso et quelques sprites animés
- j'étais habitué à des libs comme Genlib (TI) ou SDL 1, où l'ouverture d'une fenêtre renvoie une surface, dans laquelle on colle d'autres surfaces isues des fichiers de sprites ouverts (pas d'histoire de contexte de je ne sais quoi) : c'était basique et ça me convenant très bien.

La SFML et SDL2 (j'ai lu leurs docs) proposent des sprites, des textures, et des fenêtres contenant un renderer, le tout géré (si j'ai bien compris) par un backend OpenGL.
SDL2 propose un guide de migration, tandis que SFML propose une série de tutos sur la manière d'utiliser tout ça.
SDL2 a une doc pour son API, SFML également.

Malheureusement, les docs sont peu explicites sur le fonctionnement interne des cartes graphiques (au moins au niveau d'OpenGL), et donc je ne sais pas trop comment "il faut" s'y prendre :
- créer plein de textures avec mes fichiers d'images, et les coller dans le renderer de la fenêtre principale ?
- créer plein de textures avec mes fichiers d'images, les coller dans une texture temporaire, et coller celle-ci dans le renderer avant l'affichage ?
- créer plein de "sprites" (surfaces ou whatever), et les attribuer directement à la texture finale ? (parce que d'après le tuto SFML, il faut utiliser un minimum de textures. Ah bon, ça sert à quoi alors, les "sprites" sont pas censés être en RAM ??)

De plus, les libs permettent d'attribuer des attributs aux textures, genre "statique" (limite ro), ou "streaming" (usage intensif). Mais dans quel contexte ?? Pour y coller des sprites, des textures, autre chose ?

Bref, je ne sais pas du tout ce qu'il convient de faire, alors qu'avant c'était si simple, merci pour vos avis. smile

2

Le tutorial donne la réponse à ta question: sprite = statique, framebuffer = streaming.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Ca, j'ai à peu près compris, mais je ne vois pas dans quel cadre il faut s'en servir : où doivent être stockées les images en provenance des fichiers, et sur quoi les envoyer pour les afficher ?

4

Folco (./3) :
où doivent être stockées les images en provenance des fichiers
Texture statique. (Je pars du principe que si tes images sont stockées dans des fichiers, c'est qu'elles sont fixes.)
et sur quoi les envoyer pour les afficher ?
Sur le renderer (la texture qui sert de backbuffer pour l'écran, SDL fait toujours du double-buffering) que tu affiches avec SDL_RenderPresent.

(Et je te signale que j'ai pu donner ces réponses sans jamais avoir codé la moindre chose avec SDL 2, et seulement du pur audio (émulation de son de TiEmu) avec SDL 1. wink Tout est écrit dans le lien que tu as donné, en l'occurrence la section "If your game wants to blit surfaces to the screen".)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

J'ai l'impression que la doc de la SFML dit autre chose.
Et quand je lis ça : http://www.sfml-dev.org/tutorials/2.3/graphics-vertex-array-fr.php#exemple-tile-map , j'ai l'impression que le tuto de la SDL2 sert à porter rapidement un jeu, et non à utiliser des bonnes pratiques basées sur la compréhension des choses.

6

Bah, en gros, c'est la différence entre afficher le tilemap avec les routines de sprites de ExtGraph ou utiliser le Tilemap Engine, sauf que là, c'est sur PC. smile (Et dans tous les cas, tu afficheras forcément les sprites mobiles par dessus le tilemap.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité