estoy usando un dispositivo Android con Froyo que soporte OpenGL ES 1.1 y OpenGL ES 2.0Android OpenGL ES Framebuffer - Representación profundidad de búfer a la textura
Quiero hacer que el buffer de profundidad a una textura. Después de ver una serie de ejemplos de OpenGL, OpenGL ES en otras plataformas (incluido iPhone), he intentado varias configuraciones de FBO.
Parece que puedo obtener una configuración de FBO con una textura de color, pero cada vez que adjunto una textura de profundidad falla.
Mi código actual se basa en this example pero también crea una textura de color en lugar de configurar y dibujar búferes en ninguno.
¿Hay un ejemplo simple de configuración de un FBO de OpenGL ES en Android para procesar la profundidad de una textura? Alternativamente, ¿hay algún documento que describa qué es y qué no es compatible?
Gracias por los comentarios - Necesitaba específicamente una solución para ES 1.1, si se podía encontrar y funcionaba en Android. También quiero ver ES 2 - No estoy seguro de entender la idea de incluir la información de profundidad en el buffer de color - ¿tiene alguna referencia que pueda ver para entender mejor la idea?
En cuanto al código, mi fuente es apenas diferente del enlace que publiqué anteriormente. El estado de Framebuffer es que no está completo.
Gracias por la sugerencia fragmento shader - Ya tengo la idea. Veremos eso si no puedo conseguir otra solución funcionando. Mi ideal es obtener profundidad y color al mismo tiempo; no quiero renderizar el color y la profundidad por separado si puedo evitarlo.
Sin poder comentar directamente el soporte de Android para la conexión de búfer de profundidad (y por lo tanto no puede proporcionar una respuesta real), si está dispuesto a confiar en ES 2.0, entonces una solución es empacar información de profundidad en un búfer de color y luego descomprímalo en el momento relevante. La profundidad homogénea está siempre en el rango de 0 a 1, por lo que un esquema de punto fijo no es demasiado problemático. – Tommy
Debe publicar el código. Cuando falla, ¿qué significa? Genera un error GL? ¿Cuál es el estado de Framebuffer? –
Para empacar la profundidad en un búfer de color, simplemente crea un sombreador de fragmentos que escribe la posición Z de un fragmento en el canal de color.Si está usando Windows y quiere un ejemplo, descargue RenderMonkey y juegue con él, estoy bastante seguro de que uno de los ejemplos lo hará. –