我为iPhone编写图形应用程序,我正在寻找将我最近的应用程序“层”移植到Android平台。图层是绘画应用程序,允许用户在屏幕上绘制并使用不同的画笔,颜色等创建多层次的绘画......并输出到PSD。这是有桌面同步,涂抹工具,很多好东西... http://www.layersforiphone.com/Android OpenGLES渲染到纹理
我开始在星期一看Android平台,我遇到了一个主要问题。我使用OpenGL来完成所有绘图,因为它提供了最佳性能。但是,有几个地方需要渲染到纹理中,然后使用纹理。例如:
- 使用刷子的质地和精灵的行来创建纹理黑色涂料冲程甲
- 穿戴刷色+α的glColor4f然后绘制纹理阿到屏幕上。
在iPhone上,随着用户的手指移动,我可以持续这样做,我可以在第一代iPod Touch上实现12-15fps。这是必要的,因为将颜色和alpha应用于构成画笔描边的单个精灵并不会产生正确的结果(因为精灵重叠并且使笔画太暗)。
Android平台支持OpenGL ES 1.0,但似乎忽略了处理帧缓冲区的关键函数。我无法找到将纹理绑定到帧缓冲区并使用OpenGL进行绘制的方法。
以下是我通常会去了解它在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);
有没有这样的事情在Android平台上?在iPhone上,OpenGL比基于软件的绘图要快得多,而且是唯一可行的解决方案(相信我 - 我也写了一个CoreGraphics绘画应用程序......)。也许我可以在Android上采用另一条路线?我愿意跳过任何必要的箍环,但我不会发布应用程序,除非性能为好(当您在屏幕上绘制时为10fps +)。
刚兴趣的人,下面是几个不同的Android设备的GL_EXTENSIONS: http://www.rbgrn.net/content/345-hands-on-motorola-droid-opengl-es-specs 它看起来像DROID是目前唯一支持帧缓存的Android手机。 – 2009-11-29 17:56:48