2009-09-07 76 views
0

任何人都知道在iPhone上绘制多层2D OpenGL ES内容的最佳做法是什么?绘制分层OpenGL ES内容的最佳方式是什么?

例如,假设我想绘制一个复杂的全屏背景纹理,接着是旋转纹理,接着是顶部的另一个alpha混合纹理。

有没有办法只绘制背景纹理一次,只在需要的时候在上层绘制变化?

到目前为止我发现的一切都表明,你应该总是glClear(),然后以正确的顺序绘制所有内容,每一帧,每个刻度。但是如果它不改变,每秒绘制60次是没有意义的...

谢谢!

回答

0

如果您的绘图要覆盖每个像素(并且您不是透明颜色的alpha混合),则不必glClear()。 (你不必绘制你看不到的东西。)

但是在大多数情况下,你需要在每一帧画出背景。如果您的动画只发生在比屏幕更小的矩形中(其余的保持静态),您可能只能重绘该矩形,但这可能比它的价值更麻烦。

是什么让你的背景纹理复杂?它只是大(512x512)?

+0

其实我只是用这个作为例子...在现实中,我正在绘制复杂的分层内容。在背景中,它实际上是一堆线条。在此之上,我正在绘制一个不断旋转的纹理,并在其上方绘制另一系列纹理。由于背景很复杂(不只是1纹理),渲染需要时间,我想看看是否可以通过仅绘制一次来缓存该纹理。证明每帧画3层都太慢了。 到目前为止,我已经通过有2个EAGLViews解决了这个问题,最上面的一个设置为opaque = NO。我只是想知道是否有更好的方法来做到这一点。 – yozzozo 2009-09-07 21:54:44

+0

然后,您可以将所有线条渲染为纹理,然后每帧渲染该纹理。这应该有助于缓慢的线条绘制。 (你有个人资料,对吗?) – 2009-09-08 18:38:26

相关问题