我已经使用OpenGL-ES 1.1编写了一个应用程序,但我想知道切换到2.0是否会带来速度上的提升。有没有人用大多边形数模型做过测试?我只想渲染有不同颜色的三角形,没有什么花哨的。然而,我想为我的比较测试渲染大约一百万个三角形。
发布于 2011-04-16 05:53:57
OpenGL ES 1.1和2.0提供了两种截然不同的3-D图形制作方法,因此我不知道直接性能比较有多大意义。如果创建仅模拟OpenGL ES 1.1的固定函数管道的2.0着色器,则使用这两种着色器可能会看到相同的性能。这是由Apple's documentation on the PowerVR SGX支持的,它说:
PowerVR SGX的图形驱动程序
还通过使用着色器高效地实现固定函数管道来实现OpenGL ES 1.1。
要渲染基本的纯色三角形,我建议使用OpenGL ES 1.1,因为您需要编写的代码要少得多。如果您能够使用1.1中的内置功能,那么针对该版本通常会更容易一些。你也有一个稍微大一点的市场,因为你能够用不支持2.0的硬件来瞄准(现在)少数的iOS设备用户。
但是,与1.1相比,OpenGL ES 2.0允许您使用其顶点着色器和碎片着色器执行更多操作,因此,您可以使用广泛的几何体执行的某些操作可以由着色器处理。这可以产生更好看、更快的效果。
例如,我正在使用2.0着色器完成对我的分子渲染器的更新,这将显著提高可视化结构的分辨率。我是通过使用自定义着色器来实现这一点的,这些着色器为这些结构中的球体和圆柱体生成光线跟踪替身。这些物体在任何放大倍数下看起来都是完美的圆形和平滑。在OpenGL ES 1.1中,使用纯几何体来做这件事几乎是不可能的,因为所需的三角形数量将是荒谬的(此外,广告牌对于我的柱面也不能很好地工作,在这种情况下,这些形状的相交将不会被正确处理)。
对于这些设备来说,一百万个三角形可能有点多。在我的基准测试中,老款iPhone 3G每秒处理约50万个三角形,而第一代iPad每秒处理约200万个三角形。我还没有完全测试速度更快的iPad 2,但我的早期测试显示它每秒大约有8,000,000 - 10,000,000个三角形。即使是在最快的设备上,在最好的设备中,在百万三角形的场景下,你也只能获得~10 FPS。可能性是,你不需要这样的几何尺寸,所以我会先做我能做的减少它。
发布于 2013-08-02 19:54:36
ES2.0中的性能提升不是通过渲染单个VBO实现的,而是通过
1)自定义着色器中的性能调整,以仅执行所需的最低要求,而不是更一般的固定函数
2)由于矩阵流水线的简化以及矩阵堆栈和“固定函数”的移除,渲染了大量的对象,这些函数必须在状态变化时找出新的着色器,并且消除了对某些效果的多遍渲染的需要。
例如,这允许CPU在单独的线程中执行所有动态矩阵变换,同时忽略静态矩阵,并避免CPU->GPU之间不必要的传输。在着色器版本中,不需要在2D和3D状态更改之间不断重做摄影机矩阵。
https://stackoverflow.com/questions/5682010
复制相似问题