SDL passe t-il sur tous les PC ?

arthurhebus Message lu Posté le 04 Juil 2008 à 22:51 Bulle
Avatar de arthurhebus
Nouveau Membre

Messages : 7
GCPoints : 2981
Bonjour à tous j'aimerais savoir si SDL_HWSURFACE ou SDL_DOUBLEBUF peuvent faire buguer certaines cartes graphiques parceque pour un programme tout simple programmé avec SDL j'ai deux personnes sur des pc différents qui reboot après écran bleu.
Ou sinon est ce que certains ordis ne supportent pas SDL ?

C'est vraiment un bout de code tout simple, il passe bien chez moi. Je comprends pas pourquoi l'exe saute sur les autres ordis.
Le vilain en question :
http://rafb.net/p/d0XLiu14.html
Darktib Message lu Posté le 04 Juil 2008 à 23:02 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
J'ai pas testé, mais il me semble que la SDL utilise une vieille API... peut etre sur des cartes trop récentes?
Mod Message lu Posté le 05 Juil 2008 à 11:13 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
La SDL sous Windows est basée sur DirectX 6 si mes souvenirs sont bons. La compatibilité est assurée avec le matériel, normalement.

Pour le problème même, dixit la documentation SDL, la constante SDL_DOUBLEBUF n'est valide qu'avec SDL_HWSURFACE, le fait que tu y ajoutes le SDL_FULLSCREEN peut être la cause du problème. Essaye de rester en mode normal pour voir le résultat.

Juste une remarque au passage sur le fullscreen : c'est à éviter, la plupart des ordinateurs tournent plus rapidement en mode fenêtré. Préfère donc plutôt l'utilisation d'une fenêtre maximisée (windowed fullscreen) que du plein écran même. C'est en tout le cas pour DirectX.


Enfin, un vilain petit canard dans ton code : tu poses ton return de main dans une condition. Ca peut être problématique si tu quittes le programme sans passer par les cas possibles. Le système d'exploitation peut considérer que ton programme a planté s'il ne renvoie pas l'information attendue. Ca pourrait être la cause du problème (ça serait tout de même très étonnant), mais vu que tu ne dis pas exactement à quel moment l'application plante (au chargement, à l'exécution, à la sortie ?), je ne peux pas dire.
Je te conseillerai plutôt de mettre dans tes conditions un break, qui quittera la boucle while, et ensuite tes commandes de fin de programme et le return.
Cpl.Bator Message lu Posté le 05 Juil 2008 à 16:14 Bulle
Avatar de Cpl.Bator
Nouveau Membre

Messages : 17
GCPoints : 8751
les évenements sont mal gerer dans le code.

extrait de http://jeux.developpez.com/faq/sdl/?page=evenements

Code :
while(jeu_continue) {
  /* Gestion des événements */
 while(SDL_PollEvent(&event)) { /* Correct */
  switch(event.type) 
  {
   case SDL_QUIT : 
     jeu_continue = 0;
     break;
    ....
   default :
     break;
  } 
 }
}


@++


noob4ever Message lu Posté le 06 Juil 2008 à 12:01 Bulle
Avatar de noob4ever
Explorateur

Messages : 295
GCPoints : 48742

Citation :

La SDL sous Windows est basée sur DirectX 6 si mes souvenirs sont bons. La compatibilité est assurée avec le matériel, normalement.



SDL sous windows utilise un rendu Direct3D 5, ce qui est trèèèèèèèèèèèèèèèèès vieux, ça ne m'étonnerai pas si cette vieille API fait des appelles système très obsolète qui font buger.
What did C:/DARTHVADER said to C:/DARTHVADER/LUKESKYWALKER ?

I'm your folder
Darktib Message lu Posté le 07 Juil 2008 à 16:38 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
En fait la SDL est bien surtout pour les vieilles machines...
Je pense pas qu'il s'agisse des appels systemes (une librairie graphique n'en fait pas tant que ca...) mais surtout de la carte graphique... Exemple : au moins un dixieme des cartes les plus récentes ne supportent plus le mode d'affichage en bits...
Sinon tu as pas mal d'autres librairies graphiques, en pure 2d ou non, par exemple a SFML,etc...
arthurhebus Message lu Posté le 07 Juil 2008 à 18:12 Bulle
Avatar de arthurhebus
Nouveau Membre

Messages : 7
GCPoints : 2981
Ah ok voici le pourquoi de la chose.
Alors on dit c++ language universel, jeux exportables partout mais c'est de la cacahuète en barre :tongue: .
Ben je vais changer de librairie graphique alors.
Merci pour vos réponses, bonne soirée à tous. :smile:
Cpl.Bator Message lu Posté le 07 Juil 2008 à 20:14 Bulle
Avatar de Cpl.Bator
Nouveau Membre

Messages : 17
GCPoints : 8751
le problème n'est certainement pas là , DirectX assure la rétro compatibilité , donc une cg toute neuve avec Dx10 fait tourner SDL sans problème.
le bug pour le moment , c'est la gestions des événements. je suis quasi sur qu'une fois codé correctement , les progs tournent partout.

@++
Darktib Message lu Posté le 08 Juil 2008 à 16:32 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288

Citation :

je suis quasi sur qu'une fois codé correctement , les progs tournent partout.



Je suis quasiment entierement d'accord. En effet il y a software et hardware - et il existe pas mal de composants qui n'assurent pas de retro compatibilité. De toute facon le software est limité par le hardware.
demonixis Message lu Posté le 06 Sep 2008 à 23:27 Bulle
Avatar de demonixis
Membre Novice

Messages : 42
GCPoints : 23109
Salut,

SDL est multiplatforme et utilise soit OpenGL soit DirectX comme vous l'avez soulignés, mais il y a un point sur le quelle je me devais d'intervenir : Quand on utilise SDL en mode hardware c'est bien la carte graphique qui est utilisée via une api tel que OpenGL ou DirectX (tout dépend de l'OS) MAIS si ce mode n'est pas possible SDL utilisera le mode software (qui ne dépend pas de la carte graphique, donc pas d'accélération).

donc


Citation :

j'aimerais savoir si SDL_HWSURFACE ou SDL_DOUBLEBUF



En théorie non, car si le mode n'est pas disponible SDL passe en software.
gouessej Message lu Posté le 07 Sep 2008 à 10:07 Bulle
Membre Avancé

Messages : 337
GCPoints : 64624

Citation :

Alors on dit c++ language universel, jeux exportables partout mais c'est de la cacahuète en barre :tongue: .
Ben je vais changer de librairie graphique alors.


C++ n'est pas portable, il faut rendre à César ce qui est à César. SDL donne un bon coup de main en terme de portabilité mais tu pourrais peut-être envisager d'utiliser OpenGL directement, non? J'avance ça mais c'est peut-être un trop gros changement pour toi.


Citation :

Je comprends pas pourquoi l'exe saute sur les autres ordis.


Oups... Apparemment, tu t'intéresses juste à Windows :angry:


Citation :

Juste une remarque au passage sur le fullscreen : c'est à éviter, la plupart des ordinateurs tournent plus rapidement en mode fenêtré. Préfère donc plutôt l'utilisation d'une fenêtre maximisée (windowed fullscreen) que du plein écran même.


Chez moi, en OpenGL, sous Linux, utiliser l'un ou l'autre ne change rien du tout aux performances, de même sous Windows. De plus, sur certaines machines, passer en exclusive fullscreen mode fait planter le programme donc je te rejoins, autant s'en passer sauf si on en a vraiment besoin, par exemple pour permettre à l'utilisateur de changer la résolution de l'écran.
Dernière édition le 07 Sep 2008 à 10:07
SEB Message lu Posté le 07 Sep 2008 à 16:20 Bulle
Avatar de SEB
Membre Evolué

Messages : 554
GCPoints : 103313

Citation :

Alors on dit c++ language universel, jeux exportables partout mais c'est de la cacahuète en barre :tongue: .
Ben je vais changer de librairie graphique alors.



Ben sinon si t'es comme moi que t'aime pas utiliser les librairie... tu recode tout toi meme... en portable... ce qui signifie que pour certainne classe tu sera obliger de mettre quelques petits

#ifdef _WIN32

#else

#endif

et voila tout tu recode la roue et ca marche nikel en plus tu peu coder que ce qui t'intéresse et pas avoir à fournir de librairie au final.

Bon ok je suis un peu fou... mais j'aime bien refaire la roue ^^
++
Seb
NextGine : 3D games engine
Nombre de lignes actuel : 77683
gouessej Message lu Posté le 08 Sep 2008 à 22:02 Bulle
Membre Avancé

Messages : 337
GCPoints : 64624

Citation :

Bon ok je suis un peu fou... mais j'aime bien refaire la roue ^^


Faut voir si le projet est justement de réinventer la roue, on peut pas toujours tout recoder.
le_teigneux Message lu Posté le 30 Avr 2009 à 18:20 Bulle
Membre Novice

Messages : 26
GCPoints : 4507

Citation :

[/Ah ok voici le pourquoi de la chose.
Alors on dit c++ language universel, jeux exportables partout mais c'est de la cacahuète en barre .
Ben je vais changer de librairie graphique alors.
Merci pour vos réponses, bonne soirée à tous.


C++ est portable à condition d'utiliser les bibliothèques de base comme les fonctions du C Runtime et de la STL.
C/C++ sont des langages qui ont peu de fonctionnalités comme par exemple les graphismes car historiquement ils sont plus anciens que Java ou .NET par exemple...
Avant pour faire un jeu sous Ms-Dos en C/C++ et alors que SDL n'existait pas,il fallait appeler des routines graphiques du genre d'Allegro.
Maintenant pour en revenir à SDL le problème , sous Windows, c'est Microsoft qui change sans arrêt l'architecture de Direct X.
Microsoft avait abandonné Direct Draw ( qu'utilise SDL ) avec Direct X 8.0 puis avec Dx11 semble avoir réintroduit une nouvelle composante comme Direct 2d..


Citation :


C'est vraiment un bout de code tout simple, il passe bien chez moi. Je comprends pas pourquoi l'exe saute sur les autres ordis


Le sujet est vieux ( presqu 'un an ) je ne sais pas comment tu as résolu le problème mais si tu as des écrans bleus c'est que tu fais mal les initialisations vidéos, que tu charges des grosses bitmaps qui ne peuvent tenir en mémoire...
Dernière édition le 30 Avr 2009 à 18:24
LOIC Message lu Posté le 01 Mai 2009 à 11:18 Bulle
Avatar de LOIC
Membre Avancé

Messages : 392
GCPoints : 82299
Un petit message dans ce poste que j'ai consulté par hasard, car j'ai moi même une machine relativement récente (acheté il y à quelques mois), et tout les jeux indés BETA programmés en C++ que j'ai téléchargé (qui apparemment utilisent ce que vous appelez la SDL, je n'ai pas les connaissances en C++ pour m'étendre) donnent le même résultat; le PC gratte quelques instant puis plus rien, même pas un message d'erreur...

Donc si les jeux qui utilisent SDL ne tournent pas sur les machines récentes, ça risque d'être ennuyeux (après c'est peu être mon PC mais bon).
mon petit studio de jeux video indépendants :

www.naphelia.com
Darktib Message lu Posté le 01 Mai 2009 à 12:59 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Il me semble que tu as eu la meme chose avec HolySpirit ? Dans ce cas c'est la SFML qui ne marche pas (en tout cas pour HS)... et elle est beaucoup plus à jour...
LOIC Message lu Posté le 01 Mai 2009 à 19:17 Bulle
Avatar de LOIC
Membre Avancé

Messages : 392
GCPoints : 82299

Citation :

Il me semble que tu as eu la meme chose avec HolySpirit ? Dans ce cas c'est la SFML qui ne marche pas (en tout cas pour HS)... et elle est beaucoup plus à jour...



Oui tout à fait Darktib, cela me peine doublement car cela fait longtemps que je cherche un projet amateur de H&S d'aussi bonne facture :rolleyes:

J'ai eu le même problème avec le jeu de baton, et avec d'autre jeux amateur en C++ plus ou moins anciens...

Mais cela ne vous fait pas peur de programmer un jeu en sachant que quelques années après il ne passera plus que sur les vieille bécanes ? Il y a forcement une parade !
mon petit studio de jeux video indépendants :

www.naphelia.com
freemaul Message lu Posté le 01 Mai 2009 à 19:31 Bulle
Avatar de freemaul
Explorateur

Messages : 174
GCPoints : 50213

Citation :

Mais cela ne vous fait pas peur de programmer un jeu en sachant que quelques années après il ne passera plus que sur les vieille bécanes ? Il y a forcement une parade !



Il faut croiser les doigts pour que les bibliothèques utilisées soient mise à jours par leur(s) créateur(s) pour fonctionner avec les nouvelles bécanes , et recompiler le jeux avec ces nouvelles mise à jours.

Sinon je ne savais pas que la SFML ne marchais pas pour tout le monde, c'est dommage je suis en train de coder avec ^^
"La vie n'a pas de prix, mais elle coûte chère"
Darktib Message lu Posté le 01 Mai 2009 à 19:54 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Si, en général il existe des modes de compatibilité...
De toute, façon, dans 50 ans(par exemple) l'intégralité des programmes actuels ne marcheront plus^^
LOIC Message lu Posté le 01 Mai 2009 à 20:02 Bulle
Avatar de LOIC
Membre Avancé

Messages : 392
GCPoints : 82299

Citation :

Il faut croiser les doigts pour que les bibliothèques utilisées soient mise à jours par leur(s) créateur(s) pour fonctionner avec les nouvelles bécanes , et recompiler le jeux avec ces nouvelles mise à jours.

Sinon je ne savais pas que la SFML ne marchais pas pour tout le monde, c'est dommage je suis en train de coder avec ^^



Croisons les doigts en effet !
Aïe, après comme je disais c'est peu être du à mon PC, ton jeu est disponible en BETA ? Je pourrais faire le test.



Citation :

De toute, façon, dans 50 ans(par exemple) l'intégralité des programmes actuels ne marcheront plus^^



C'est certain que vu comme ça :lol:

Mais bon c'est quand même dommage pour des jeux comme HS, surtout que ce genre de jeu est très actuel (surtout avec l'arrivée du Diablo III !). Si les particuliers ayant des machines récentes ont tous un plantage direct, le projet va avoir mauvais réputation :sad:
mon petit studio de jeux video indépendants :

www.naphelia.com
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0526 secondes