[OpenGL] Intérêt de OpenGL pour la 2D

Le côté programmation du développement d'un jeu vidéo.

Intérêt de OpenGL pour la 2D

Messagepar Nieluj » 13 Juil 2010, 14:46

Salut à tous !

Il y a quelques mois je me suis lancé dans la réalisation d'un petit moteur 2D orienté plateforme, en c++ et utilisant SDL. J'ai relativement bien avancé et je me pose certaines questions:

Est ce qu'il y a un intérêt à ce que je change la partie affichage gérée actuellement par SDL par une gestion avec OpenGL ? Est ce que ça me permettra de meilleurs performances ? J'ai en vue d'utiliser un système de particules, est ce que ça y apportera quelque chose ? J'ai lu à ce sujet, un article qui parlait des 'point sprites' introduit dans DirectX 8.0, est ce que c'est encore d'actualité et est ce que OpenGL propose quelque chose d'équivalent ?
D'une manière générale, qu'est ce qu' OpenGL peut apporter de plus dans un moteur 2D ?

Merci pour vos réponses future ;)
Avatar de l’utilisateur
Nieluj
Hello World, I'm new !
 
Messages: 110
Inscription: 27 Oct 2009, 14:11

Messagepar Gavos » 13 Juil 2010, 16:06

Je ne connais pas la réponse à toutes tes questions, mais je sais que le SDL est basée sur une vieille version de DirectX (la 7, à moins que ce ne soit plus d'actualité ?) sous Windows, et n'utilise pas OpenGL pour la partie graphique sous Linux. Du coup, tu peux effectivement espérer des gains de performances en passant à OpenGL (enfin si tu le fais correctement, bien entendu).

La manière classique est de remplacer les blits par des affichages de carrés texturés, donc ça complique sensiblement le code. Par contre ça a certains avantages comme la possibilité de faire des "vraies" rotations de tes sprites ou d'utiliser des shaders...

Mais as-tu vraiment besoin de gagner en performances ? Je demande ça parce que le changement de moteur dans un développement jeu précède généralement l'abandon du projet... Et note que tu n'es pas obligé d'utiliser directement OpenGL pour tirer parti de ses performances d'OpenGL; par exemple la SFML (pour ne citer qu'elle) est une bibliothèque 2D nettement plus simple et qui s'appuie sur OpenGL. Dans ton cas ce serait peut-être une bonne option ?
Gavos
 
Messages: 1076
Inscription: 19 Mar 2005, 13:00

Messagepar Nieluj » 13 Juil 2010, 16:44

J'avoue que tu me fais douter.. Disons que je pensais également m'introduire dans le monde d'OpenGl par la même occasion.

Mais as-tu vraiment besoin de gagner en performances ? Je demande ça parce que le changement de moteur dans un développement jeu précède généralement l'abandon du projet...


Quand tu dis ça, ça me fait croire que c'est beaucoup de travail. Est-ce vraiment le cas ? J'ai du mal comprendre
Avatar de l’utilisateur
Nieluj
Hello World, I'm new !
 
Messages: 110
Inscription: 27 Oct 2009, 14:11

Messagepar Mokona » 13 Juil 2010, 17:18

Ca dépend pas mal de l'architecture de ton programme.

Si tu as bien isolé la couche graphique et que tu as une abstraction pour les sprites, ça ne sera pas tant de boulot que ça.

Si tu as des blits de sprites SDL disséminés ça et là en grand nombre, ça va être pas mal de boulot.
Mokona
Hello World, I'm new !
 
Messages: 1686
Inscription: 13 Mar 2005, 13:00

Messagepar Gavos » 13 Juil 2010, 17:37

Quand tu dis ça, ça me fait croire que c'est beaucoup de travail. Est-ce vraiment le cas ? J'ai du mal comprendre


En fait c'était une observation statistique ^^. À partir du moment où les développeurs d'un projet décident de changer de moteur (ou pire, de repartir from scratch) c'est qu'ils commencent à être démotivés par leur projet et qu'ils essaient de trouver un second souffle de cette manière. Je trouve que c'est déjà assez difficile comme ça de finir un jeu, pas besoin de rajouter du boulot supplémentaire si ce n'est pas nécessaire... Mais n'hésite pas si tu penses que la SDL pose ou posera de problèmes de performances, ou bien si ton but est d'apprendre OpenGL :)

Maintenant je ne sais pas si c'est la meilleure manière d'aborder OpenGL, j'aurais eu tendance à commencer un petit projet de zéro plutôt qu'une migration. D'ailleurs c'est peut-être une bonne option de faire d'abord un tout petit prototype qui se contente d'afficher des carrés texturés ? Déjà ça te permettrait de voir la charge de travail, et ensuite ça te donnerait un code de référence dont tu pourras t'inspirer durant ta migration.

PS: Je viens de voir qu'en fait tu travailles sur un moteur, et non un jeu, désolé d'avoir mal lu... Du coup c'est différent, oublie mes remarques sur le besoin de changer ton moteur et les risques pour ton projet ^^
Gavos
 
Messages: 1076
Inscription: 19 Mar 2005, 13:00

Messagepar Nieluj » 13 Juil 2010, 19:45

Ok, merci bien ! En réalité, j'ai déjà touché un peu OpenGl juste pour voir. J'avais fais un cube texturé qui tournait :00000015: , le truc de base j'imagine.

Ca dépend pas mal de l'architecture de ton programme.

Si tu as bien isolé la couche graphique et que tu as une abstraction pour les sprites, ça ne sera pas tant de boulot que ça.

Si tu as des blits de sprites SDL disséminés ça et là en grand nombre, ça va être pas mal de boulot.


J'en prend note. Il serait plus prudent que je revois cette partie avant tout. Mais je penses , au final, me lancer un moment ou un autre.

Sinon , que pensez vous de l'avenir d'OpenGL ? Y a-t-il une technologie qu'il faut surveiller dans les années à venir ? Ma question est peut être prématurée mais ça m'intéresse.

Edit: Que veux tu dire par "une abstraction pour les sprites".
Avatar de l’utilisateur
Nieluj
Hello World, I'm new !
 
Messages: 110
Inscription: 27 Oct 2009, 14:11

Messagepar Mokona » 13 Juil 2010, 20:40

La base, c'est même un truc qui tourne non texturé :)

Pour ce qui est de surveiller la technologie, si on prend en compte le passé, oui, c'est évident. L'ennui, c'est que personne ne sait de quoi demain sera fait :)

Une abstraction pour les sprites, pour faire simple. Si tu as des choses comme :

monSprite.move(20,10);
monSprite.show();
monSprite.hide();

Indépendant de l'utilisation d'une bibliothèque.
Mokona
Hello World, I'm new !
 
Messages: 1686
Inscription: 13 Mar 2005, 13:00

Messagepar Nieluj » 13 Juil 2010, 21:07

Ok, je vois ! Merci du tuyau, tout ça me semble clair ;)
Avatar de l’utilisateur
Nieluj
Hello World, I'm new !
 
Messages: 110
Inscription: 27 Oct 2009, 14:11

Messagepar iliak » 14 Juil 2010, 20:54

Salut

OpenGL te fait très facilement de la 2D (c'est simplement une question de projection). Autre point qui est intéressant, tu as de l'accélération matérielle non négligeable et surtout, tu peux coupler le tout avec des shaders pour faire des trucs très sympas !

Tu peux jeter un oeil à mon framework ArcEngine qui est en C# et qui utilise OpenTK pour l'interface avec OpenGL. J'ai des exemples de jeu aussi. Je m'en sers actuellement pour faire un clone de Chaos Engine / Eye of the Beholder.

Si tu as des questions pour la mise en place au niveau OpenGL, je peux t'aider.

A+
- Iliak -
[http://www.mimicprod.net ArcEngine : a free 2D .Net gaming framework]
[http://www.dungeoneye.net Dungeon Eye : Remake open source de Eye of the beholder II]
iliak
Hello World, I'm new !
 
Messages: 141
Inscription: 25 Fév 2010, 14:53

Messagepar Nieluj » 15 Juil 2010, 11:43

Merci iliak, je vais regarder ça.
Avatar de l’utilisateur
Nieluj
Hello World, I'm new !
 
Messages: 110
Inscription: 27 Oct 2009, 14:11


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 10 invités

cron