Android renderização OpenGLES para textura

Eu escrevo aplicativos gráficos para o iPhone e estou procurando migrar meu aplicativo mais recente, "Camadas", para a plataforma Android. Camadas é um aplicativo de pintura que permite aos usuários desenhar na tela e criar pinturas em várias camadas com diferentes pincéis, cores, etc ... e exportar para PSD. Tem sincronização de desktop, uma ferramenta de borrar, muitas coisas boas ...http://www.layersforiphone.com/

Eu comecei a olhar para a plataforma Android na segunda-feira e me deparei com um grande problema. Eu uso OpenGL para fazer todo o desenho porque oferece o melhor desempenho. No entanto, existem vários lugares em que preciso renderizar uma textura e usar a textura. Por exemplo:

Use textura de pincel e uma linha de sprites para criar um traço de tinta preta na textura AColoque brush cor + alfa em glColor4f e, em seguida, desenhe a textura A na tela.

No iPhone, faço isso continuamente à medida que o dedo do usuário se move e consigo atingir 12-15fps em uma primeira geração do iPod Touch. É necessário porque aplicar cor e alfa aos sprites individuais que compõem o traçado do pincel não produz o resultado correto (uma vez que os sprites se sobrepõem e tornam o traço muito escuro).

A plataforma android suporta o OpenGL ES 1.0, mas parece omitir as principais funções para lidar com framebuffers. Eu não consigo encontrar uma maneira de vincular uma textura ao framebuffer e desenhar nele usando o OpenGL.

Aqui está como eu normalmente faço isso no 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);

Existe algo assim na plataforma Android? No iPhone, o OpenGL é significativamente mais rápido do que o desenho baseado em software e é a única solução viável (confie em mim - eu também escrevi um aplicativo de pintura CoreGraphics ...). Talvez haja outro caminho que eu poderia tomar no Android? Estou disposto a passar por todos os aros necessários, mas não vou publicar o aplicativo a menos que o desempenho sejaBoa (10fps + conforme você desenha na tela).

questionAnswers(1)

yourAnswerToTheQuestion