profondeur Android question tampon: conseils pour résoudre l'expérience de tout le monde
-
11-10-2019 - |
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é.
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.