|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
Bonjour,
J'ai développé un pseudo jeu vidéo en C utilisant la bibliothèque OpenGL. C'est un projet libre pour un cours de robotique. Sur mon PC Windows et Linux, tout s'affiche bien et le refresh rate (indiqué en haut a gauche pendant la partie) est autour de 25 donc fluide. Le ploblème c'est que lorsque on tourne le jeu sur un autre ordi, soit le refresh rate est de 4 (pas fluide), soit les objets s'affichent mal, soit un objet et la caméra doivent etre proche pour l'afficher correctement ; ou soit les trois. J'utilisais Code::Blocks 10.05 sur Windows (je n'ai pas testé l'execution un autre PC linux), j'ai bien linké : glut32 opengl32 glu32 winmm gdi32 "libfmod.a" A cette url, vous trouverez "afficher les image" et "visionner la vidéo de présentation" pour voir ce que ca me donne sur mon ordi ''compilateur'', et enfin le jeu a telecharger. http://hammoutene.free.fr/amir/project.html#linkrobot Quels sont les problèmes a vos avis ? |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
Sur mon PC le frame rate est de 29, ce qui n'est quand même pas très élevé pour le nombre de polys apparents.
Peux-tu montrer tes fonctions de dessin ? (parce que sans ça on va avoir le plus grand mal à t'aider)
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
je ne vois pas ce que tu veux dire par fonction dessin. Il y a plus de 3K lignes de code pour ce programme et la plupart servent à dessiner la salle, le robot et les objets
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
Utilises-tu glBegin() ... glEnd() ?
Quelles optimisations GPU utilises-tu (display list, vertex array, VBO, VAO) ? Quelle est la configuration des postes sur lesquels tu as ces ralentissements ?
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
Bonjour,
oui j'utilise souvent glbegin et glend pour la config du PC ou ca ralenti, qu'est ce que je regarde ? je peux te dire que sur l'ordi ou ca ralenti (9 en refresh rate) c un Windows 7 processeur GenuineIntel, 1.30GHz, ram 3Go, 64 bits et sur le PC compilateur (35 en refresh rate) c un Windows 7 processeur Intel Core 2 Duo CPU T6600, 2.20GHz, ram 4Go, 64 bits les PC ou ca affiche mal les objets je n'ai pas les config je ne sais pas bien si ca repond à ta question sur l'optimisation mais je suis allé (sur CodeBlocks) dans Build Option, Release, Compiler setting, Compiler Flags, selection de la liste Optimization et j'ai cela de coché : -s et -O2 bonne fêtes ^^ |
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
voila un bon de mon code :
Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() |
Déjà, si tu stockes tes modèles dans des VBO ça ira beaucoup mieux (glBegin ... glEnd c'est déprécié depuis pas mal de temps déjà). Tu devrais commencer par là, je pense.
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
|
|
#8 | ||
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
Bonjour,
je ne connais pas ce jargon, VBO? j'ai cherché sur le net ca ne m'a pas parut clair voila des bouts de mon code liés au stockage des objet : Code :
|
||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() |
Le but d'un VBO (Vertex Buffer Object) est d'avoir ton buffer de vertex (donc toutes les informations les concernant : positio, normales, coordonnées de texture ...) stocké à même la mémoire de la carte graphique. Ca permet entre autres de ne l'envoyer à la carte qu'une fois puis de demander son dessin.
Il faut donc créer le buffer (glCreateBuffers). Puis on l'active (glBindBuffer), on lui affecte ses données (glBufferData) et enfin on le désactive (là aussi glBindBuffer). Un fois qu'il est rempli, à chaque boucle d'affichage tu l'actives (glBindBuffer) tu le dessines (glDrawElements) et tu le désactives (là aussi glBindBuffer). Tu stockes donc un buffer (en fait son index retourné par glCreateBuffers) par objet que tu as. Je te conseille aussi de te renseigner sur les interleaved buffers pour avoir un seul buffer contenant toutes les informations de tes vertex.
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
10
|
|
|
#10 |
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
j'vais travailler tout ca, j'te remercie pour ton aide
|
|
|
00
|
|
|
#11 |
![]() ![]() ![]() ![]() Alexandre LaurentIngénieur développement logiciels Inscription : mai 2008 Messages : 10 764 ![]() |
Bonjour,
C'est à ce moment lent que je conseille de la lecture, lecture proposée par Developpez.com http://jeux.developpez.com/tutoriels/?page=gl et plus précisément : http://raptor.developpez.com/tutorial/opengl/vbo/
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
00
|
Copyright © 2000-2013 - www.developpez.com