Escribo aplicaciones gráficas para el iPhone y estoy buscando portar mi aplicación más reciente, 'Capas', a la plataforma Android. Layers es una aplicación de pintura que permite a los usuarios dibujar en la pantalla y crear pinturas de varias capas con diferentes pinceles, colores, etc. y exportar a PSD. Tiene sincronización de escritorio, una herramienta de borrón, muchas cosas buenas ... http://www.layersforiphone.com/Android OpenGLES Renderizar para texturizar
Empecé a mirar la plataforma Android el lunes y me encontré con un gran problema. Uso OpenGL para hacer todo el dibujo porque ofrece el mejor rendimiento. Sin embargo, hay varios lugares donde necesito renderizar una textura y luego usar la textura. Por ejemplo:
- uso del cepillo textura y una línea de sprites para crear un trazo de pintura negro en la textura Un
- cepillo puesto blanqueador + alfa en glColor4f y luego dibujar la textura A en la pantalla.
En el iPhone, hago esto continuamente mientras el dedo del usuario se mueve y puedo alcanzar 12-15 fps en un iPod Touch de 1ra generación. Es necesario porque aplicar color y alfa a los sprites individuales que componen la pincelada no produce el resultado correcto (ya que los sprites se superponen y hacen que la carrera sea demasiado oscura).
La plataforma android admite OpenGL ES 1.0 pero parece omitir funciones clave para tratar con framebuffers. No puedo encontrar una forma de enlazar una textura al framebuffer y dibujar dentro de ella usando OpenGL.
Así es como normalmente iría al respecto en el iPhone:
// generate a secondary framebuffer and bind it to OpenGL so we don't mess with existing output.
glGenFramebuffers(1, &compositingFramebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, compositingFramebuffer);
// attach a texture to the framebuffer.
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
// subsequent drawing operations are rendered into the texture
// restore the primary framebuffer and (possibly) draw the rendered texture
glBindFramebuffer(GL_FRAMEBUFFER, originalActiveFramebuffer);
¿Hay algo como esto en la plataforma Android? En el iPhone, OpenGL es significativamente más rápido que el dibujo basado en software y es la única solución viable (créanme, también escribí una aplicación de pintura CoreGraphics ...). Tal vez hay otra ruta que podría tomar en Android? Estoy dispuesto a pasar por los aros que sean necesarios, pero no publicaré la aplicación a menos que el rendimiento sea (10 fps + mientras dibuja en la pantalla).
Sólo para cualquier persona interesada, aquí están los GL_EXTENSIONS en algunos diversos dispositivos Android: http://www.rbgrn.net/content/345-hands-on-motorola-droid-opengl-es-specs Se parece que el DROID es el único teléfono Android compatible con framebuffers hasta el momento. –