Android GLES20.glBlendEquation no funciona?
He estado tratando de hacer un motor 2.5D con texturas de mapa de profundidad y normal para unas pocas semanas, no a diferencia de lo que se utiliza aquí Linky . Después de pensar el dibujo de un mapa de profundidad en el fragmento shader de una textura era imposible debido a ES 2.0 falta de la variable gl_fragDepth encontré un tutorial para iOS donde se usó glBlendEquation con el modo GL_MIN / GL_MAX a "falso" buffer de profundidad del fragmento A un framebuffer-textura Linky . Desafortunadamente GLES20.glBlendEquation hace que la aplicación se bloquee en ambos teléfonos (SGS 1/2) con UnsupportedOperationException. Así que me pregunto si alguien ha utilizado esta función para cualquier éxito? GL_MIN / GL_MAX también parece estar faltando en la especificación OpenGL ES 2.0 de Android, así que estoy probablemente sin suerte aquí … ¿Alguna idea?
BTW Parece que funciona en GL11Ext, pero ya que estoy usando el shader de fragmentos para el mapeo normal esto no funcionará de mí.
- No se puede compilar shader conocido por ser bueno en android
- Android OpenGL ES 2.0 sólo está limitado a 16 texturas en la memoria?
- Cómo dibujar / hacer una colisión de física de bala cuerpo / forma?
- La mejor práctica para usar Sprites en un juego usando AndEngine GLES2
- Android OpenGL ES 2.0: No obtengo resultados que quiero con Matrix.traslateM
- Detectar si OpenGl ES 2.0 está disponible o no
- La línea de dibujo de OpenGL ES 2.0 basada en movimiento, Line comienza siempre en origen
- Textura negra de OpenGL ES en Nexus S
- ¿Cómo aprender y usar OpenGL ES 2.0? Simplemente no lo entiendo - Qn serio.
- GLES2.0: Usar GL_TEXTURE_EXTERNAL_OES a través de glEGLImageTargetTexture2DOES
- ¿Cuál es el significado de la clase EGL14
- Uso de FBO para grabar la pantalla en Android
- Uso del flujo de vídeo como textura abierta de GL ES 2.0
Estaba experimentando en mi tableta de Vega (Tegra) y esto funcionó para mí:
Fragment shader:
#extension GL_NV_shader_framebuffer_fetch : require // makes gl_LastFragColor accessible precision highp float; varying vec2 v_texcoord; uniform sampler2D n_sampler; void main() { vec4 v_tex = texture2D(n_sampler, v_texcoord); gl_FragColor = min(gl_LastFragColor, v_tex); // MIN blending }
Muy fácil, ¿eh? Pero me temo que esto será NV-sólo.
- Impresión de Android directamente a la impresora de red?
- Cómo leer y escribir documentos BSON en Android