En bref pour profiter d'une quelconque accélération graphique il faut utiliser la ram graphiqueSinon tu passe ton temps à faire des transferts ram -> carte graphique qui en temps réel est un véritable bottleneck.
En bref pour profiter d'une quelconque accélération graphique il faut utiliser la ram graphiqueSinon tu passe ton temps à faire des transferts ram -> carte graphique qui en temps réel est un véritable bottleneck.
A la décharge de Kannagi, il est vrai que beaucoup de tutoriels (même récent) présente OpenGL avec glBegin/glEnd (c'est la cas par exemple du tutoriel Cours d'introduction à OpenGL et GLUT de Developpez, qui date de 2006)
J'ai voulu donner à Kannagi des tutos expliquant les bonnes pratiques... et c'est difficile à trouver finalement (en tout cas, une recherche google ne les mets pas en premier ; et il faut déjà s'y connaitre pour savoir ceux qui sont correcte et les autres). Même les tutos de NeHe (qui date, c'est vrai) commence par glBegin/glEnd. La seule chose intéressante est la FAQ Jeux - Optimisation (mais c'est très court)
Il faudrait peut être remettre à jour les tutos sur Developpez. Ou attendre les prochains tutos en cours (celui de LittleWhite sur les shaders ou le miens sur QtOpenGL)
@Kannagi
Pour l'histoire du mode immédiat, tu peux lire le tuto La géométrie en OpenGL : vers les VertexBufferObject
Pour les méta-textures (une texture qui contient toutes les images), tu peux regarder la FAQ Comment et pourquoi utiliser une meta-texture? (qui montre aussi du code avec glBegin/glEnd...)
Bref, il y a beaucoup de chose... mais la difficulté est de les trouver
Bah merci de tous vos conseils , et surtout de m'indiquer les erreur a pas faire (faudrait mettre a jour les tuto opengl ~~).
Je vais lire tous ça et je vous tiendrai au courant =P
Ah je viens de remarquer que je supporte que opengl 1.1 ~~
Les pires cartes Intel que j'ai rencontré supportaient 1.3.
Pour moi ça veut dire que tu n'as peut-être pas les drivers OpenGL "corrects" de ta carte graphique mais tu as l'implémentation 1.1 qui vient avec Windows.
Attention les gens qui joueront à ton jeu n'auront peut-être pas leurs drivers eux aussi, donc si tu as deux moteurs de rendus tu pourrais leur donner le choix entre les deux (où regarder le GL_VERSION).
Celà dit : j'ai vu le jeu et je ne vois pas trop pourquoi tu veux utiliser OpenGL au lieu de rester sur SDL. Si ton framerate est au dessus de la fréquence de rafraichissement avec SDL, tu gagnes quoi ?
De mon point de vue, l'utilisation d'OpenGL avec des glBegin() / glEnd() ne pose pas vraiment de problème (on peut facilement dessiner un tas de trucs ... sans que cela rame pour autant).
Par contre, l'architecture du programme est douteuse. d'abord, nous ne sommes pas sur à 100% que le port SDL -> OpenGL est correct (notamment sur l'utilisation d'OpenGL). Déjà, il y a plus de 20 fichiers images (et perso, je n'ai jamais testé le chargement d'autant de textures dans OpenGL). De plus, elle ne sont pas power of two (hola je reviens encore là dessus, mais c'est que sur une ATI cela m'avait posé plein de problème (notamment, l'envoler du CPU)).
Un autre point qui peut être intéressant de regarder, c'est sur les techniques de profiling (profilage ?). Et oui, ici nous avons un problème de performance, et rien pour savoir d'où il peut venir. gprof aurait pu aidé, mais je crois savoir que Kannagi travaille sur Windows (Visual Studio donne aussi de bons outils de profiling
)
Et finalement, le code donné ne montre pas tout. Notamment un truc que je vois du coté d'OpenGL qui me choqueet ça dans la boucle principale ... mais bizarrement, comme il y a GLUT, je ne comprends pas pourquoi cela est là
Code : Sélectionner tout - Visualiser dans une fenêtre à part MNS_Fenetre(largeur,hauteur,fullscreen);![]()
Je pense que je vais faire ça donner 2 version au choix (vu que le portage est pas compliqué).
Je voulais une version Opengl pour profiter de accélération matériel , et donc permettre une plus grosse résolution (et a la limite mettre le fond en 3D ).
Les image sont bien en puissance de 2 , j'ai fait un redimensionnement pendant le chargement.
Cette fonction est une fonction pour gérer la fenêtre avec freeglut (et donc rien a voir avec opengl),le 3eme paramètre est une option , fullscreen = 0 pour désactiver le redimensionnement de la fenêtre,1 pour le fullscreen , et le reste par défaut.
Sinon je travaille principalement sur windows mais je préfère code block, c'est plus simple pour pouvoir compiler aussi sur linux (en file sur le projet code block =P).
Comme je l'ai dit aucun appel de opengl , j'appelle les fonction freeglut
Mais si tu te pose la question meme en les enlevant çafait pas baisser mon CPU (vu que j'appelle pas opengl).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 glutReshapeFunc(&MNS_Reshape); glutDisplayFunc(&MNS_Display); glutLeaveMainLoop(); glViewport(0,0,largeur,hauteur); glutReshapeWindow(w,h);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager