PDA

Voir la version complète : Choisir SDL comme 1ere lib graphique


blackout
10/09/2005, 10h38
bonjour,

je me presente pour mon premier post, je programme en C/C++ depuis bientot
4 ans ainsi que dans plusieurs autres langages (Java, Cobol, SystemC, VHDL, VB, divers asm, ...).

je fait egalement de la 3D et de la 2D pour le plaisir mais j'aimerais couplé tout ces domaines en un seul projet : un jeu :00000023:

j'ai toujours voulu realiser mon jeu, pas un MMORPG avec moteur 3D et tout et tout mais un petit jeu de strategie qui contiendrais une poigné d'unité et qui evoluerai au fur a mesure.

j'ai donc commencé par réaliser ce que je voulais, un style graphique Age Of Empire (2D/3D iso comme vous voulé).

Mais le probleme se pose dans le choix de la lib graphique, je ne sais pas laquelle choisir.

N'aimant pas apprendre des competence inutile j'aurais voulu un investissement a plus ou moins long terme, j'ai donc retenu 3 libs (OpenGL, DirectX, SDL).

je ne veut pas relance le Troll DX ou OGL mais plutot la lib qui me permettra d'acquerir les competences et les connaissances dans le domaine de l'affichage et du jeu video sans avoir a me soucié de certaine complexité : exit donc DirectX.
OpenGL bien qu'en utilisant 2 dimensions pour obtenir un affichage 2D me semble proposé enormement d'option qui au debut risque d'alourdir l'apprentissage.

il me reste donc SDL qui semble interressant si ce n'est 2 ou 3 petit points :
1 - SDL utilise DirectX5 : ce ne serais pas une librairie sur la fin ou la reactualisation de la lib permet (contrairement a DX) de profiter des inovation sans devoir reprendre tout son code ?
2 - exist-il une communauté (francophone) sur cette lib ?
3 - est-ce un bon choix ou mon raisonnement n'est pas tres judicieux ?
4 - ce message vous a-t-il barbé par sa longueur ? :00000013:

merci d'avoir pris le temps de le lire et de repondre si possible :-)

ffomnislas
10/09/2005, 12h07
C'est SxDL qui utilise directx. Il n'y a aucune lien entre SDL et SxDL.

Personnelement je n'ai jamais utilisé directx car ce n'est pas portable ;)

SDL est pas mal comme librarie. Elle permet de gérer le son, evenements clavier/souris/joystick, thread, semaphore ainsi que l'affichage 2d tout en étant portable. Par contre c'est plutot lent...

Si tu veus faire quelques choses de fluides avec pas mal d'objets qui bouge à l'écran privilégie (selon moi) le couple opengl/sdl.

Tu utilise l'affichage 2d de opengl qui n'est pas compliqué et tu utilise SDL pour initialiser opengl, charger tes images ainsi que gérer les evenements.

blackout
10/09/2005, 12h13
si justement, SDL semble etre basé sur directX en version 5 ce qui le rend "peu performant" a priori.

donc OpenGL/SDL ... et j'utilise SDL pour l'initialisation ?

si tu pouvais juste m'expliquer le fonctionnement !!
en quoi cela consiste ?
pour entrée/sortie je suis OK que c'est une centralisation interressante un peu comme DX par contre pour l'affichage tu me conseil de choisir openGL ?

ffomnislas
10/09/2005, 12h19
Ca m'etonnerait que SDL soit base sur Directx vu que c'est portable windows/linux/macos ... alors que Directx c'est Microsoft.


Opengl ne sait pas par ex créer une fenetre, c'est la que SDL intervient lors de l'initialisation.
Code source pour intialiser opengl avec SDL:
http://www.games-creators.org/wiki/Source:Initialiser_SDL_avec_OpenGL.cpp

Ensuite vu que tu veut faire de la 2d il faudra que tu t'y prenne de cette manière. Tu crés un carré (par ex) dans le plan 2d.
Créer et visualiser une scène 2d avec Opengl:
http://www.games-creators.org/wiki/Cr%C3%A9er_et_visualiser_une_sc%C3%A8ne_2D_avec_OpenGL

Et tu applique ensuite sur ce carré ton image:
SDl et Opengl: application des textures
http://www.games-creators.org/wiki/Cr%C3%A9er_et_visualiser_une_sc%C3%A8ne_2D_avec_OpenGL

Voila en gros ;)

Aranoth
10/09/2005, 12h45
Si, sous Windows, SDL utilise DirectX5.

Sous les autres OS elle utilise autre chose (je ne sais pas quoi par contre)

Juste aussi pour dire que SDL n'est pas si lente que ça :00000005:
Elle est largement suffisante pour un RTS du genre AoE je pense.
(c'est à dire avec un nombre d'unités à l'écran résonnable)

Mais en effet SDL n'est plus mise à jour malgrès sa communauté toujours aussi grande.
Je peux donc te conseiller si tu veux vraiment pas perdre ton temps de passer par SDL&OpenGL. Comme ça tu commenceras à apprendre OpenGL tout en utilisant les fonctions pratiques de SDL. ;)

ffomnislas
10/09/2005, 12h56
dans mes projets SDL était lent, mais j'ai tendance à voir loin quand je programme^^.

blackout
10/09/2005, 13h45
merci de votre aide

>> ffomnislas
merci de ton explication et de tes liens, je comprend mieux le fonctionnement :-)

je vais deja faire les tutos que tu m'a donné et les autres du site et je reviendrais vous faire part de mes problemes ;-)

Corkus
10/09/2005, 13h49
En fait, avec le couple SDL/OpenGl, tu enleves à SDL la tâche d'affichage, ce qui le rendra plus performant déjà. Tu l'utiliseras pour les évènements, thread, musique, et chargement d'image.

blackout
10/09/2005, 16h03
ok je comprend mieux le fonctionnement SDL/Opengl

je suis en train de voir et de compiler des trucs betes avec code::blocks pour voir si le systeme est operationnel :-)