2009-03-23 9 views

Répondre

5

Je le ferais probablement en ayant simplement une sorte de structure de données (tableau, liste chaînée, peu importe) qui contient la "scène" actuelle. Initialement, c'est vide. Ensuite, lorsque l'événement se produit, vous créez une sorte de représentation de la nouvelle géométrie souhaitée et l'ajoutez à la liste.

Sur chaque image, vous effacez l'écran et parcourez la structure de données, en mappant chaque représentation en un ensemble approprié de commandes OpenGL. C'est vraiment standard.

La structure de données est souvent appelée scene graph, elle est souvent sous la forme d'un arbre ou d'un graphique, où la géométrie peut avoir des géométries enfant et ainsi de suite.

1

Si vous utilisez la bibliothèque GLuT (qui est plutôt standard), vous pouvez tirer parti de ses fonctions de génération automatique de primitives, telles que glutSolidSphere. Vous pouvez trouver les documents API here. Jetez un oeil à la section 11, «Rendu géométrique des objets». En tant que déroulement suggéré, votre programme pourrait garder une sorte de liste, mais des paramètres pour chaque primitive, plutôt que la géométrie réelle. Dans le cas de la sphère, ce serait position/radius/tranches. Vous pouvez ensuite utiliser les fonctions GLuT pour dessiner facilement les objets. Évidemment, cela vous limite à ce que GLuT peut dessiner, mais c'est généralement bien pour les cas simples.

0

Sans quelques détails de quel environnement vous utilisez il est difficile d'être précis, mais quelques-unes des pointeurs vers des choses qui peuvent facilement aller mal lors de la configuration OpenGL

  1. Assurez-vous que vous avez l'ensemble de la caméra jusqu'à regarder le point où vous dessinez la sphère. Cela peut être étonnamment difficile, et l'approche la plus simple consiste à implémenter glutLookAt à partir de l'OpenGL Utility Toolkit. Assurez-vous que les plans avant et arrière sont réglés sur des valeurs raisonnables.

  2. Désactivez la suppression de la face arrière, au moins pour commencer. Bien sûr, avec le code de production, l'alignement arrière vous donne un gain de performance rapide, mais il est remarquablement facile de configurer incorrectement les normales sur un objet et de ne pas le voir parce que vous regardez le visage invisible. que toutes les commandes sont exécutées. Dessiner dans le buffer arrière, puis échouer à appeler glSwapBuffers est également une erreur courante.

  3. Occasionnellement, vous pouvez rencontrer des problèmes avec les formats de tampons - bien que si vous copiez à partir d'un exemple de code qui fonctionne sur votre système, cela risque moins de poser problème.

codage graphique tend à être assez facile à déboguer une fois que vous avez l'environnement de base correcte, car le réglage de sortie est visuel, mais l'environnement de rendu sur un nouveau système peut toujours être un peu difficile jusqu'à ce que vous avez cette première cube ou sphère rendu. Je recommanderais d'obtenir un échantillon ou un modèle et de le modifier pour commencer plutôt que d'essayer de configurer la fenêtre de rendu à partir de zéro. Utiliser GLUT pour vérifier les premiers brouillons d'appels OpenGL est également une bonne technique.

Questions connexes