SDL passe t-il sur tous les PC ?
| arthurhebus |
Posté le 04 Juil 2008 à 22:51
|
|
![]() 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 |
Posté le 04 Juil 2008 à 23:02
|
|
![]() 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 |
Posté le 05 Juil 2008 à 11:13
|
|
![]() 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 |
Posté le 05 Juil 2008 à 16:14
|
|
![]() 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 |
Posté le 06 Juil 2008 à 12:01
|
|
![]() Messages : 295 GCPoints : 48742 |
Citation :
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 |
Posté le 07 Juil 2008 à 16:38
|
|
![]() 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 |
Posté le 07 Juil 2008 à 18:12
|
|
![]() 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 Ben je vais changer de librairie graphique alors. Merci pour vos réponses, bonne soirée à tous. |
|
| Cpl.Bator |
Posté le 07 Juil 2008 à 20:14
|
|
![]() 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 |
Posté le 08 Juil 2008 à 16:32
|
|
![]() Messages : 4017 GCPoints : 347288 |
Citation :
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 |
Posté le 06 Sep 2008 à 23:27
|
|
![]() 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 :
En théorie non, car si le mode n'est pas disponible SDL passe en software. |
|
| gouessej |
Posté le 07 Sep 2008 à 10:07
|
|
![]() Messages : 337 GCPoints : 64624 |
Citation :
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 :
Oups... Apparemment, tu t'intéresses juste à Windows Citation :
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 |
Posté le 07 Sep 2008 à 16:20
|
|
![]() Messages : 554 GCPoints : 103313 |
Citation :
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 |
Posté le 08 Sep 2008 à 22:02
|
|
![]() Messages : 337 GCPoints : 64624 |
Citation :
Faut voir si le projet est justement de réinventer la roue, on peut pas toujours tout recoder. |
|
| le_teigneux |
Posté le 30 Avr 2009 à 18:20
|
|
![]() Messages : 26 GCPoints : 4507 |
Citation :
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 :
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 |
Posté le 01 Mai 2009 à 11:18
|
|
![]() 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 |
Posté le 01 Mai 2009 à 12:59
|
|
![]() 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 |
Posté le 01 Mai 2009 à 19:17
|
|
![]() Messages : 392 GCPoints : 82299 |
Citation :
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 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 |
Posté le 01 Mai 2009 à 19:31
|
|
![]() Messages : 174 GCPoints : 50213 |
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 ^^
"La vie n'a pas de prix, mais elle coûte chère"
|
|
| Darktib |
Posté le 01 Mai 2009 à 19:54
|
|
![]() 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 |
Posté le 01 Mai 2009 à 20:02
|
|
![]() Messages : 392 GCPoints : 82299 |
Citation :
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 :
C'est certain que vu comme ça 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
mon petit studio de jeux video indépendants :
www.naphelia.com |
|







