Comment remplir un polygone avec une couleur différente que limite?
J'ai besoin de dessiner un polygone qui a la frontière des lignes avec une seule couleur et remplir l'intérieur avec une autre couleur. Est-il un moyen facile de faire cela ? Actuellement, je dessine deux polygones un pour la couleur intérieure et 1 pour la limite. Je pense qu'il doit être mieux pour ce faire. Merci pour votre aide.
glColor3d (1, 1., .7); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glBegin(GL_TRIANGLES); glVertex3f(-0.8 f, 0.0 f, 0.0 f); glVertex3f(-0.6 f, 0.0 f, 0.0 f); glVertex3f(-0.7 f, 0,2 f, 0.0 f); glEnd(); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glColor3d (.5, .5, .7); glBegin(GL_TRIANGLES); glVertex3f(-0.8 f, 0.0 f, 0.0 f); glVertex3f(-0.6 f, 0.0 f, 0.0 f); glVertex3f(-0.7 f, 0,2 f, 0.0 f); glEnd();
Merci à vous tous de répondre à ma question. Je suis assez nouveau à l'openGL, et qui cherchait une réponse simple à une question simple. La réponse semble être pas si simple et peut probablement prendre un semestre vaut de l'étude.
OriginalL'auteur tadpole | 2011-02-28
Vous devez vous connecter pour publier un commentaire.
Une approche plus moderne serait de mettre en œuvre cette via geometry shaders. Ce serait le travail pour l'OpenGL 3.2 et au-dessus dans le cadre de la fonctionnalité de base, ou pour l'OpenGL 2.1 avec l'extension GL_EXT_geometry_shader4.
Ce livre a toutes les théorie : Shader à Base de fil de fer de dessin. Il fournit également un exemple de mise en œuvre de la technique la plus simple en GLSL.
Voici mon propre coup de couteau à elle, essentiellement un port de leur mise en œuvre pour l'OpenGL 3.3, limitée à un triangle primitives:
Vertex shader: (remplacer les entrées avec tout ce que vous utilisez pour passer au sommet de données d'un m, v et p des matrices)
Geometry shader:
Vertex shader: (remplacer les couleurs avec ce que vous avez besoin !)
OriginalL'auteur Nicolas Lefebvre
Vous pouvez changer le mode de remplissage entre les polygones, des lignes et des points, à l'aide de
glPolygonMode
.Afin de tracer un polygone lignes dans une couleur différente, vous pouvez effectuer les opérations suivantes:
Décalage de ligne peuvent être nécessaires, car OpenGL ne garantit pas les bords des polygones seront pixellisé dans le exact même pixels que les lignes. Donc, sans autorisation explicite de décalage vous pouvez et avec des lignes cachées par des polygones, en raison de l'échec de test de profondeur.
Vous avez écrit que vous êtes dessin 2 polygones. Je suppose que vous recouvrez l'intérieur du polygone de la zone deux fois, ce qui double la la charge sur le rasterizer. Ce que je propose, c'est d'appeler le tirage au sort de la procédure deux fois, la mise en place de différentes remplir les modes de GL.
Je pense que nous parlons de la même chose. J'ai mis à jour la question d'inclure mon code. J'espérais ne pas avoir à le faire. C'est juste un simple polygone, mais le code peut contenir des centaines de millions de polygones.
Oh, c'est beaucoup mieux défini question 🙂 Dans ce cas, il est conseillé de lire www2.imm.dtu.dk/pubdb/vues/edoc_download.php/4884/pdf/...
OriginalL'auteur kvark
Il y a 2 façons de le faire:
celui que vous faites à l'instant (2 polygones, l'une un peu plus grande que l'autre, ou à la main après)
texture
à ma connaissance, il n'existe pas d'autres possibilités et à partir d'un point de vue des performances de ces 2 possibilités, en particulier la première, tant que vous n'couleur de remplissage, sont extrêmement rapides.
OriginalL'auteur Bernd Elkemann
Je pense que vous devriez voir cette réponse:
remplissage et le contour
OriginalL'auteur gokaysatir