[OpenGL] arètes cachés en pointillés

Résolu/Fermé
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 1 nov. 2011 à 15:51
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 8 nov. 2011 à 21:26
Salut,
Je cherche à afficher en OpenGL des géométries avec les arêtes cachés en pointillés et les arêtes visibles en traits plein.
Je sis qu'il faut utiliser le DepthBuffer et le StencilBuffer en multi-passes mais je n'arrive pas à obtenir ce que je veux.

Merci à ceux qui ont une solution à me proposer



2 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
8 nov. 2011 à 21:26
J'ai trouvé la solution :
- Tracer les lignes dans le StencilBuffer (avec le DepthMask et tous les ColorMask à False) avec les paramètres :
    glStencilFunc(GL_ALWAYS, 1, 1)
    glStencilOp(GL_KEEP, GL_KEEP GL_REPLACE)

- Tracer les faces avec les paramètres :
    glPolygonOffset(0.8, 0.8)
    glEnable(GL_POLYGON_OFFSET_FILL)
    glDepthMask(True)
    glStencilFunc(GL_EQUAL, 1, 0)
    glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE)

- Activer le ColorMask : glColorMask(True, True, True, True) puis retracer les lignes
- Tracer les lignes en pointillés avec les paramètres
    glDisable(GL_DEPTH_TEST)
    glClear(GL_STENCIL_BUFFER_BIT)
    glStencilFunc(GL_EQUAL, 0, 1)
    glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE)

Et voilà !
1
Malibou129 Messages postés 5 Date d'inscription lundi 31 octobre 2011 Statut Membre Dernière intervention 1 novembre 2011
1 nov. 2011 à 15:52
oui LE SITE géolabo
Si jai bien compris ce que tu voulais
Sinon tant pis
-1
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
2 nov. 2011 à 18:18
Euh oui mais non, en effet t'as rien compris ;-)
Je cherche à programmer ce type de rendu, pas à l'utiliser...

Merci quand même.
0