news - libreria libgdx
OpenGL ES 2.0 muestra objetos en orden de profundidad opuesto usando LibGDX (1)
Si el orden es siempre el correcto, verifique que haya pasado algo significativo para glDepthFunc
. El valor predeterminado es el GL_LESS
generalmente sensible; prueba GL_GREATER
.
Si el pedido parece ser el orden en el que está emitiendo llamadas, compruebe que realmente tiene un búfer de profundidad. Es difícil ser más específico sin saber qué back-end de LibGDX está utilizando, pero a menos que se haya asignado un búfer de profundidad, no importa lo que haga con la prueba de profundidad, no hay almacenamiento para el búfer.
Respuesta correcta, según el comentario de twiz a continuación:
Necesitaba configurar GL_LESS, pero aparentemente a LibGDX no le gusta cuando usas glDepthFunc (). Mi shader personalizado implementa la clase Shader, así que tuve que usar el RenderContext que se pasa al método begin (). Luego agregué esta línea: context.setDepthTest (GL20.GL_LESS);
Supongo que posiblemente LibGDX está haciendo algo inteligente con el enhebrado y que el contexto apropiado no está establecido antes de llamar al sombreador (o, posiblemente, LibGDX estrictamente quiere que uses el contexto explícito en lugar de uno implícito y por lo tanto sale de su manera de no tener uno establecido - posiblemente hay una consideración de qué se puede enhebrar en el futuro y un deseo de mantener uniformes las reglas de codificación). Solo una conjetura al azar, por supuesto.
Estoy usando LibGDX y renderizando algunos modelos. Esto funciona como se esperaba, excepto que los objetos que están "más lejos" se muestran "al frente" de los objetos "más cercanos". En otras palabras, el orden de profundidad parece ser lo opuesto a lo que pretendía que fuera.
Curiosamente, los modelos están recortados en el orden correcto por el plano de recorte de lejos. (La mayoría de los objetos a distancia desaparecen primero)
He intentado habilitar GL_DEPTH_TEST
, y estoy borrando GL_DEPTH_BUFFER_BIT
.
¿Alguien sabe lo que podría estar causando esto?