首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android OpenGLES渲染到纹理

Android OpenGLES渲染到纹理
EN

Stack Overflow用户
提问于 2009-11-11 17:21:29
回答 1查看 9.9K关注 0票数 6

我为iPhone编写图形应用程序,我希望将我最新的应用程序“层”移植到安卓平台上。图层是绘画应用程序,允许用户在屏幕上绘制和创建多层绘画与不同的画笔,颜色等.出口到私营部门司。它有桌面同步,污迹工具,很多好东西.http://www.layersforiphone.com/

我星期一开始研究Android平台,遇到了一个大问题。我使用OpenGL来完成所有的绘图,因为它提供了最好的性能。然而,有几个地方,我需要渲染到纹理,然后使用纹理。例如:

  1. 使用画笔纹理和一行精灵在纹理中创建黑色画笔A
  2. 将画笔color+alpha放在glColor4f中,然后在屏幕上绘制纹理A。

在iPhone上,当用户的手指移动时,我会不断地这样做,并且我能够在第1代iPod触摸上实现12-15 this。这是必要的,因为将颜色和阿尔法应用于构成笔刷的单个精灵并不能产生正确的结果(因为精灵重叠,使笔画太暗)。

安卓平台支持OpenGL ES1.0,但似乎忽略了处理框架缓冲区的关键功能。我无法找到将纹理绑定到框架缓冲区并使用OpenGL绘制它的方法。

下面是我通常在iPhone上做的事情:

代码语言:javascript
复制
// 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+,因为你在屏幕上画)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-11 19:34:49

我怀疑所有安卓设备是否会支持完全相同的OpenGL ES扩展,或者它们都会支持完全相同版本的OpenGL ES。

Framebuffer (FBO)是OpenGL ES2.0核心规范的一部分;如果您的安卓设备支持ES2.0,那么它就支持FBO。

如果您的android设备支持ES1.1,那么使用GL_OES_framebuffer_object使用glGetString(GL_EXTENSIONS).检查扩展字符串

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1716728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档