Wil*_*Kru 9 android scroll opengl-es zooming
我们将在Android上的OpenGL ES中开发一个滚动/缩放场景,非常像"愤怒的小鸟"中的一个级别,但更像是World Of Goo中的级别.更像后者,因为世界不会包含"愤怒的小鸟"中的重复图层,而是一个大图像.由于场景需要滚动/缩放,因此很多内容都不可见,我想知道实现渲染的最有效方法,只关注环境(即不是世界范围内的对象而是背景层).
我们将使用正交投影.
首先想到的是创建一个世界大小的大4个顶点矩形,其背景纹理映射到它,并使用glTranslatef/glScalef进行平移/缩放.但是,我想知道屏幕边界之外的非可见区域是否仍然由OpenGL渲染,因为它没有被剔除(你将丢失可见区域以及只有4个顶点).因此,细分这个矩形是否更有效,所以可以剔除不可见的较小的矩形?
另一种选择是创建一个填充屏幕的4顶点矩形,然后通过调整其纹理坐标来移动背景.但是,考虑到纹理大小的限制,我想在构建更大的世界时会遇到问题.对于像AngryBirds这样的重复背景来说,这似乎是一个很好的实现.
也许有另一种方式..?
如果有人知道如何在AngryBirds/World of Goo中完成它,请分享我喜欢听的内容.他们似乎已经实现了一个系统,可以让世界平稳地移动和缩放(WorldOfGoo =非常).
这可能是您实施的最佳选择。
根据我的经验,在 Android 上,在内存中保留大纹理的成本非常高。在开始平铺之前,我会遇到很多背景纹理的 OutOfMemoryError 异常。
我认为最大的渲染瓶颈是内存传输速度和填充率,而不是任何图形计算。
编辑:查看Google I/O 2009演示文稿的 53:28。
归档时间: |
|
查看次数: |
1431 次 |
最近记录: |