首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用OpenGL ES 2.0实现安卓系统的双缓冲页面翻转

使用OpenGL ES 2.0实现安卓系统的双缓冲页面翻转
EN

Stack Overflow用户
提问于 2014-08-03 17:49:38
回答 1查看 2.3K关注 0票数 2

从Froyo开始以后,我能安全地接近Android设备的图形硬件吗?

我想在Android设备上实现一个简单的页面翻转方案,使用两个帧缓冲区。

应该是这样的:

  1. 呈现为帧缓冲区A (帧缓冲区A是后台缓冲区,当前显示帧缓冲区B)。
  2. 等待下一个VSYNC (也许是VSYNC中断?)
  3. 告诉操作系统显示帧缓冲区A,并使帧缓冲区B作为后台缓冲区。
  4. 呈现为帧缓冲区B (帧缓冲区B是后台缓冲区,当前显示帧缓冲区A)。
  5. 等待下一个VSYNC (也许是VSYNC中断?)
  6. 告诉操作系统显示帧缓冲区B,并使帧缓冲区A作为后台缓冲区。

重复步骤1-6.

更新显示大约15-25次每秒是最适合我的需要。(我永远不需要60 fps或高于30 fps的任何东西。)

我计划只使用OpenGL ES 2.0进行所有渲染。

EN

回答 1

Stack Overflow用户

发布于 2014-08-04 14:37:17

你不需要这么做。如果这样做,您的缓冲将与操作系统为您所做的缓冲是冗余的,并且只会增加延迟和开销。

您可以从此页了解当前的安卓图形体系结构。较早版本的Android有很大不同,但从一开始就有双缓冲或三缓冲的概念出现在Android中。这在很大程度上是OpenGL ES工作方式的一部分。

应用程序端的一个棘手的问题是,如果您想用VSYNC来调整您的应用程序行为(而不是在队列填充时阻塞),那么就可以确定VSYNC何时到达。有关详细信息,请参阅文档的“游戏循环”部分,但要知道您可以使用编舞员获取API 16+上的VSYNC计时。

根据这个仪表板的数据,Froyo和更早的市场份额约为0.7%。瞄准姜饼和以后更有代表性。如果您的目标是API 16 (第一个Jellybean发布版),您现在将损失大约25% (13.5%姜饼,11.4% ICS),主要是低端设备,因为其硬件要求较低。

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

https://stackoverflow.com/questions/25107428

复制
相关文章

相似问题

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