mush74
Messages postés12Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 8 mars 2008
-
30 janv. 2008 à 13:22
mush74
Messages postés12Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 8 mars 2008
-
3 févr. 2008 à 22:04
Je cherche a développer un petit programme en C/C++ sous OpenGL (2D uniquement) et GLUT qui représente un altimètre. Dans ce type d'objet, il y a un fond fixe (cadran, graduation,...) et des objets en mouvements (aiguilles).
Cela fonctionne correctement mais les ressources CPU sont trop importantes, en partie a cause du fait que le programme doit redessiner constamment les éléments fixes et les éléments mobiles, alors que seul les éléments mobiles devraient l'être.
Connaissez vous une méthode qui permette soit de placer un fond d'écran (image fixe) ou bien de créer une sorte de calque qui ne serait dessiné qu'une fois sur lequel serait appliqué la partie contenant le dessin des éléments mobiles ? Cela permettrait de ne travailler qu'au niveau de la mémoire et éviter des tas d'opérations mathématiques coûteuses (j'utilise des cercles dans la partie fixe).
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 31 janv. 2008 à 12:04
Il faut bannir toutes les fonctions glBegin/End, glVertex*. Je sais pas combien de temps il faudra pour réussir à exterminer l'usage de ces fonctions. La première étape serait de virer tous les tutoriels d'openGL d'internet qui utilisent ces fonctions totalement dépassées. Elles vont disparaitre dans Opengl 3.0 et il est temps.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 30 janv. 2008 à 18:39
Non, c'est pas du au fait que tu redessines tout, c'est du à la facon dont tu affiches tes éléments. Post un peu de code de ta partie d'affichage. Il faut également ajouter un timer pour éviter que le fps ne soit trop élevé si tu n'utilises pas la synchro verticale.
mush74
Messages postés12Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 8 mars 2008 30 janv. 2008 à 22:54
Voici un bout de code. Je suis newbie en C et openGL et pour couronner le tout je développe dans le RER...alors un peu d'indulgence svp ;-)
pour résumer, j'affiche une fenetre GLUT avec un fond de couleur. J'ajoute 6 cadrans de fond noir. La méthode employée n'est d'ailleurs pas élégante, mais j'ai pas trouvé mieux... Puis sur tout cela, je fait varier ici des graduations (ce n'est pas une aiguille sur ce bout de code, mais le principe est le même).
luhtor, tes remarques semblent interressantes, mais je n'ai pas du tout entendu parlé de timer ni de synchro verticale dans les docs que j'ai pu me procurer sur le net. Si tu as des infos...voire un bout de code qui explique ce principe...
mush74
Messages postés12Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 8 mars 2008 31 janv. 2008 à 14:04
ok, je vais regarder ce lien.
Pour info, j'ai besoin de faire tourner ce programme sur des équipements "light" (systemes embarqués), donc je ne peux pas m'appuyer sur des fonctionnalités supportées uniquement par des cartes video récentes.
Je repost dès que j'ai du neuf
Vous n’avez pas trouvé la réponse que vous recherchez ?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 31 janv. 2008 à 21:03
Il ne s'agit pas d'extensions pour les cartes vidéo récentes. Il s'agit de la technique de base pour afficher des polygones. Le lien décrit l'utilisation des vbos, si tes équipements ne le possèdent, ils possèderont obligatoirement les Vertex Array (VA) qui sont vieux maintenant et qui restent tout de meme très rapide et surtout économise énormément les ressources processeur. Tu peux aussi aller voir du coté des Display List si tu bosses sur des vieilles version d'opengl qui sont un peu plus rapide que les VA et aussi rapide que les plus récents VBO (le lien).
mush74
Messages postés12Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 8 mars 2008 3 févr. 2008 à 22:04
C'est fait. Merci luhtor, tes conseils étaient bons. J'ai retrouvé des perfs très acceptables et un taux d'utilisation CPU normal. Je banni les glVertex et j'utilise un timer !!! ;-)