colorer une carte geographique creé par openGL C++ - C++ - Programmation
Marsh Posté le 30-10-2011 à 12:47:44
je veux colorer la surface interieur de la carte ca veut dire la surface entouré par ces courbes et droites
merci
Marsh Posté le 30-10-2011 à 17:47:14
Pour remplir le contenu d'une surface en opengl, il faut créer des éléments acceptant des textures ( ex : triangle ou quadrilatère ).
Il faut donc que tu construises ta figure géométrique à partir de triangles ou quad , et que tu appliques ensuite la texture dessus.
ex pour faire un quadrilatère
Code :
|
( remplace les coordonnées par les tiennes )
glVertex3f permet de définir les coordonnées de ta forme, et glTexCoord2f permet de définir comment tu appliques la texture sur ton quad.
Ne pas oublier que ce ne sont pas les coordonnées dans la scène, mais les coordonnées propres à ton objet. Il te faut ensuite appliquer des matrices de transformations ( projection / homothétie / rotation ) pour placer ton objet dans la scène.
Ensuite, en ce qui concerne la texture, regarde du coté des fonctions :
- glGenTextures
- glBindTexture
- glTexImage2D
Il est peut etre possible de remplir une surface sans passer par une texture, mais je ne connais pas bien opengl, en tout cas, avec une texture, ca marchera forcement ( tu peux faire une texture 16x16 de la couleur que tu veux et l'appliquer en mode TILE )
Marsh Posté le 31-10-2011 à 15:46:36
merci pour votre reponse
Citation : Pour remplir le contenu d'une surface en opengl, il faut créer des éléments acceptant des textures ( ex : triangle ou quadrilatère ). |
mais la carte que j'ai dessiner contient des courbes (j'ai dessiner les courbes avec le morceau de code en haut (bezier)
et en utilisant triangle et ... je peux pas faire des courbes
alors que faire
merci
Marsh Posté le 31-10-2011 à 19:42:36
générer une surface à partir du contour doit être un problème retourné dans tous les sens.
J'imagine que tu dois pouvoir trouver de la littérature à ce sujet, peut-être en cherchant de la génération de surface à partir d'un nuage de point (et tu échantillonnes toi-même tes courbes de bézier)
Marsh Posté le 31-10-2011 à 22:56:24
Ce que tu cheches à faire, c'est trianguler un polygone concave.
en faisant une recherche sur la triangulation de polygones concaves grâce à notre ami google tu pourras trouver en premier résultat une discussion où quelqu'un finit par donner son code pour le faire (et il file même le header avec)
Pour pouvoir te servir de ce que ce type a fait, vu qu'il ne traite pas de courbes de bézier, il faudra que tu convertisse tes courbes en points. Ca se fait simplement en échantillonnant tes courbes.
Tu te débrouilles pour stockerle résultat en vertex buffer + index buffer. Tu fais un rendu des triangles résultants avec la glColor qui va bien et ca devrait faire le job.
Marsh Posté le 31-10-2011 à 23:31:24
si c'est en 2D, peut-il utiliser un algo de remplissage du même style que le pot de peinture sous paint?
Marsh Posté le 31-10-2011 à 23:42:55
breizhbugs a écrit : si c'est en 2D, peut-il utiliser un algo de remplissage du même style que le pot de peinture sous paint? |
Pour des questions de facilité d'adaptation à un changement de résolution, c'est plus sympa de faire des triangles, mais oui, dans l'absolu, ca pourrait très bien être fait avec un simple algo de remplissage.
Marsh Posté le 01-11-2011 à 01:17:23
merci pour les indications et les orientations
je viens de savoir qu'il me reste beaucoup de travail a faire, vu que je suis debutant dans le graphisme
l'idée de breizhbugs, ca a l'air plus simple meme si elle est d'aprés theshockwave moins performante
pouvez vous me donnez qlq idée domment l'implementer
merci
Marsh Posté le 01-11-2011 à 10:56:30
Reply
Marsh Posté le 30-10-2011 à 07:19:56
bonsoir
j'ai dessiner la carte geographique de mon pays avec openGL sous visualstudion10
j'ai utilisé principalement les fonctions suivantes :
celle ci pour les courbes :
Code C++ :
et celle ci pour les droites
et ca marché
alors je veux colorer la carte,
pour par la suite faire una animation avec
mais puisqu'elle n'est pas un polygome ou triangle ou ...
je sais pas comment
sachant que les courbes et les droites sont attaché et fermé
si vous avez une idéé
merci