web-dev-qa-db-fra.com

glEnable (GL_DEPTH_TEST) - rien de rendu

Dans OpenGL, j'affiche un modèle simple. Quand j'active le tampon de profondeur,

glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);

tout disparaît. J'ai lu this OpenGL FAQ, mais cela ne m'a pas aidé.

Mes paramètres de perspective sont les suivants: angle=45deg, near=1, far=40, je mets le modèle à (0,0,0) et je place mon œil à (0,0,4). Sans le tampon Z, I can voir le modèle.

Quel pourrait être le problème?

17
Jakub M.

Vous êtes-vous assuré d'effacer le tampon de profondeur?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                              ^^^^^^^^^^^^^^^^^^^
48
datenwolf

Si l'autre réponse ne fonctionne pas, essayez ce que user886079 mentionné dans un commentaire

Si ce qui précède ne fonctionne pas, vérifiez votre plan rapproché dans les fonctions gluPerspective, glFrustum ou glOrtho. La mise en mémoire tampon de profondeur ne semble pas fonctionner si elle est définie sur 0.

J'avais presque tout essayé mais je ne pouvais pas résoudre le problème du chevauchement. J'avais mis la valeur proche 0.0f. Je l'ai changé à 0.01f et les résultats sont maintenant comme il se doit.

6
user3625178

Si les réponses ci-dessus ne fonctionnent pas, essayez ce qui suit:

  • Si vous avez activé GL_CULL_FACE, vérifiez l'ordre d'enroulement des sommets de votre modèle. (LH) vs (RH).
  • Si GL_DEPTH_TEST est activé; Ensuite, vérifiez les plans de votre frustum par rapport à votre matrice de projection, ainsi que la position et la direction de la caméra.
  • Si GL_BLEND est activé; vérifiez l'ordre de rendu de vos objets par rapport au z-buffer.
0
Francis Cugler