OpenGL-ES 2.0 VS OpenGL-ES 1.1,哪个更快?

我已经使用OpenGL-ES 1.1编写了一个应用程序,但是我想知道是否有切换到2.0的速度增益。 有没有人做过大型多边形计数模型的testing? 我只想渲染具有不同颜色的三angular形,没有任何幻想。 但是,我想为我的对比testing渲染大约一百万个三angular形。

OpenGL ES 1.1和2.0提供了两种完全不同的3Dgraphics处理方式,所以我不知道直接的性能比较是否合理。 如果您创build2.0模拟OpenGL ES 1.1的固定functionpipe线的着色器,您可能会看到使用两者的相同性能。 这得到了苹果关于PowerVR SGX的文档的支持:

PowerVR SGX的graphics驱动程序还通过使用着色器有效地实现固定functionstream水线来实现OpenGL ES 1.1。

为了渲染基本的平坦的三angular形,我build议使用OpenGL ES 1.1,因为你需要编写更less的代码。 如果您能够使用1.1中的内置function,通常更容易定位该版本。 你也可以通过使用不支持2.0的硬件来定位(现在)less数iOS设备所有者,从而获得更大的市场份额。

但是,OpenGL ES 2.0使用顶点和片段着色器可以完成比1.1更多的工作,因此可以使用着色器来处理大量的几何graphics。 这可以使更好看,更快的效果。

例如,我正在使用2.0着色器完成对分子渲染器的更新,这将显着提高可视化结构的分辨率。 我正在通过使用自定义着色器来为这些结构中的球体和圆柱体生成光线追踪的冒名顶替者。 这些物体在任何放大倍率下看起来都非常圆润。 在OpenGL ES 1.1中用纯几何来做这件事几乎是不可能的,因为所需要的三angular形的数量是荒谬的(另外,广告牌对于我的圆柱体来说效果不好,而且这些形状的交集不能正确处理这种情况)。

一百万个三angular形对于这些设备可能有点多。 在我的基准testing中,旧版iPhone 3G每秒大约有50万个三angular形,而第一代iPad大约有200万个。 我还没有完全testingiPad 2的速度,但是我的早期testing表明,它每秒大约有800万到1000万个三angular形。 即使在最快的设备上,在最好的设备上,你也只能在百万三angular形场景中获得〜10 FPS。 可能性是,你不需要几何的大小,所以我会尽我所能去减less。

ES 2.0中的性能提升不是来自渲染单个的VBO,而是通过

1)自定义着色器中的性能调整只做最基本的最低要求,而不是更一般的固定function

2)由于matrixstream水线的精简以及matrix堆栈和“固定函数”的去除,渲染了许多对象,这些“固定函数”必须找出关于状态变化的新着色器,并且消除了对于某些效果的多通道渲染的需要。

这允许例如CPU在单独的线程中进行所有的dynamicmatrix转换,同时忽略静态matrix并避免CPU-> GPU之间的不必要的转移。 在着色器版本中,不需要在2D和3D状态更改之间不断重做相机matrix。