Android OpenGL 1.1 FBO 和 VBO 支持

Posted

技术标签:

【中文标题】Android OpenGL 1.1 FBO 和 VBO 支持【英文标题】:Android OpenGL 1.1 FBO and VBO support 【发布时间】:2013-08-17 15:08:31 【问题描述】:

android 的 Java VM 上使用 GL1.1 时,是否有办法实现以下 2 个目标中的任何一个: 1.使用FBO渲染到纹理 2.使用VBO将顶点信息传递给GPU内存

我有一个小型应用程序,它使用顶点数组将数千个纹理渲染到屏幕上,并且存在严重的性能问题。但是,帧不会经常更改,可以缓存在纹理中,也可以在 GPU 内存中准备就绪。

我没有找到关于如何使用旧版本的 OpenGL ES 实现这一目标的工作示例或好的教程。

【问题讨论】:

【参考方案1】:

我在 Android 上广泛使用了带有 OpenGL ES 2.0 的 FBO,并在 Linux 上使用了 1.1。对于 1.1,您需要 FBO 扩展或使用 pbuffers。如果您的 Android 设备上的 OpenGL ES 1.1 驱动程序报告具有 FBO 扩展,它们应该可以工作。他们中的大多数这样做是因为一些 Android SDK OpenGL ES 演示需要 FBO 扩展。本文有在 Linux 1.1 上使用 FBO 的示例代码:

http://processors.wiki.ti.com/index.php/Render_to_Texture_with_OpenGL_ES

我认为 Android SDK 中也有在 1.1 上使用 VBO 的示例,例如“Hello Effects”演示。

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1

【讨论】:

我通过将 FBO 用作扩展程序来工作。但是,我似乎没有任何将 VBO 与 Java 结合使用的教程或示例,尽管 GL 版本可能支持它们,但 Android 的 Java 接口可能无法提供必要的功能来做到这一点。 (不过,我已经看到了 NDK 的示例)。 SDK 中使用 VBO 和 OpenGL ES 1.1 的示例实际上是 CubeMapActivity 和 MatrixPaletteRenderer,它们是图形部分 API Demos 的一部分。

以上是关于Android OpenGL 1.1 FBO 和 VBO 支持的主要内容,如果未能解决你的问题,请参考以下文章

Android Opengl FBO 屏幕外

OpenGL ES 无法使 LUMINANCE FBO 在 Android 中工作

Framebuffer FBO渲染到纹理很慢,在Android上使用OpenGL ES 2.0,为啥?

OpenGL:使用 FBO 和视口偏移问题渲染到纹理

使用 FBO 和着色器 OpenGL 渲染到纹理

我的OpenGL学习进阶之旅解决使用Assimp和OpenGL进行在屏渲染和离屏渲染FBO时绘制3D模型出现各种诡异的模型渲染画面问题,都是血和泪的教训啊!!!