繁体   English   中英

如何优化多个全屏透明iPhone OpenGL ES图层的绘制?

[英]How can I optimize drawing of multiple fullscreen transparent iPhone OpenGL ES layers?

我正在尝试优化我的iPhone OpenGL ES应用程序。 这基于GLSprite和GLPaint示例应用程序。 我已经将EAGLView分解为一个基类,并且将其细分为3种不同的OpenGL视图以构成3个透明层。 3个EAGLViews的显示父级是UIView,而该UIView是UIWindow的子级。 我正在尝试使其尽可能接近60fps。 我在该网站上听到其他人说,iPhone能够以60fps的速度绘制50个透明层,这令人鼓舞...

我正在做的是:

1)使用与GLPaint(renderLineFromPoint:toPoint :)中相同的基于点精灵的功能绘制多达9条纹理线,直到第1层。 用于此的纹理为64x64,中间为40x40的圆圈,其余部分为透明。

2)在第2层上绘制一条具有相同功能和纹理的单线。

3)在第3层绘制9个128x128纹理的实例(一个80x80的中心圆,其余部分透明)。 该层在最上面。

每次调用touchsMoved:时,第1层和第3层很少更改,而第2层则更改(擦除全屏,重新绘制一行)。

最初,我尝试在单个EAGLView中执行此操作,例如示例...基本上按顺序绘制了所有3层的内容。 但是,这太慢了。 在添加线条图(第1层和第2层)之前还不错,但是不幸的是,每一次触摸都会绘制10条线。Moved将帧率降低了一半。 因此,我尝试通过将它们分成几层来对其进行优化...仅在必要时才绘制每层一次。 (每手指移动第二层)。 我想这还不够快,因为有很多透明性(每个图层都需要显示;每个纹理绘制都需要混合)。

我不认为我正在做很多绘图... 9个半透明的四边形和几行很多吗?

所以,我在这里注定要失败吗? 使用这么多的透明度会降低性能吗? 还是我想念的东西...非常感谢您的帮助!

我通过删除#1来解决此问题。 现在,第2层同时处理静态和动态线条绘制。 回到60fps! :)

我想iPhone只是在合成3个全屏透明图层上出现问题...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM