Question

J'ai perdu environ 30 heures cette semaine et l'écriture de code de récrire, croyant que j'avais mal compris le fonctionnement du tampon de profondeur OpenGL. Tout ce que j'ai essayé, échoué. J'ai maintenant résolu mon problème en trouvant ce qui peut être une erreur dans la mise en œuvre de Android OpenGL.

Voir cette entrée API:

http://www.opengl.org/sdk/docs/ homme / xhtml / glClearDepth.xml

  

glClearDepth vide (profondeur GLclampd);

     

Spécifie la valeur de profondeur utilisée lorsque   la mémoire tampon de profondeur est effacé. le   la valeur initiale est 1.

La mise en œuvre d'Android dispose de deux versions de cette commande:

  • glClearDepthx qui prend un nombre entier valeur, serrée 0-1

  • glClearDepthf qui prend une variable valeur de consigne, serré 0-1

Si vous utilisez glClearDepthf (1) vous obtenez les résultats que vous attendez. Si vous utilisez glClearDepthx (1) , comme je faisais alors vous obtenez des résultats différents. (Notez que 1 est la valeur par défaut, mais d'appeler la commande avec l'argument 1 produit des résultats différents que de ne pas l'appeler du tout.) Tout ce qui se passe, je ne sais pas, mais le tampon de profondeur était autorisé à une autre valeur de ce Je l'avais spécifié.

Était-ce utile?

La solution

Essayez de passer 65536 à glClearDepthx() .

GLfixed est fixé S15.16-point, de sorte 1.0 est représenté par 2^16 ou 65536.

En outre, vous lié à la documentation OpenGL régulière, pas le OpenGL ES 1.1 docs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top