繁体   English   中英

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

[英]OpenGL-ES 2.0 VS OpenGL-ES 1.1, which is faster?

我使用OpenGL-ES 1.1编写了一个应用程序,但我想知道是否通过切换到2.0可以找到速度增益。 有没有人用大多边形计数模型做过任何测试? 我只想渲染具有不同颜色的三角形,没什么花哨的。 但是,我想为我的比较测试渲染大约100万个三角形。

OpenGL ES 1.1和2.0提供了两种截然不同的三维图形处理方式,所以我不知道直接的性能比较有多大意义。 如果您创建仅仅模拟OpenGL ES 1.1的固定功能管道的2.0着色器,您可能会看到使用两者的相同性能。 这是由Apple在PowerVR SGX上的文档支持的,该文档说:

PowerVR SGX的图形驱动程序还通过使用着色器有效地实现固定功能管道来实现OpenGL ES 1.1。

为了渲染基本的,平面三角形,我建议使用OpenGL ES 1.1,因为你需要编写更少的代码。 如果您能够使用1.1中的内置功能,则通常更容易定位该版本。 您还可以使用不支持2.0的硬件(现在)少数iOS设备所有者来定位稍微大一点的市场。

但是,OpenGL ES 2.0允许您使用顶点和片段着色器比1.1更多地执行更多操作,因此您可以使用大量几何体来处理某些事物,而不是由着色器处理。 这可以使效果更好,更快。

例如,我正在使用2.0着色器完成对我的分子渲染器的更新,这将显着提高可视化结构的分辨率。 我这样做是通过使用自定义着色器为这些结构中的球体和圆柱体生成光线追踪冒名顶替者。 在任何放大倍率下,这些物体看起来都非常圆润。 在具有纯几何的OpenGL ES 1.1中执行此操作几乎是不可能的,因为所需的三角形数量将是荒谬的(同样,广告牌对我的圆柱体不起作用,并且这些形状的交集将无法正确处理那个案子)。

对于这些设备,一百万个三角形可能有点多。 在我的基准测试中,旧的iPhone 3G每秒大约有500,000个三角形,第一代iPad大约有2,000,000个。 我还没有对速度更快的iPad 2进行全面测试,但我早期的测试表明它每秒大约有8,000,000到10,000,000个三角形。 即使在那里最快的设备上,你也只能在最好的设备中获得大约百万三角形场景的10 FPS。 可能的情况是,你不需要那么大小的几何形状,所以我会尽我所能来减少它。

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

1)自定义着色器中的性能调整仅执行最低要求而不是更一般的固定功能

2)由于矩阵管道的流线化以及矩阵堆栈的移除和“固定函数”而渲染大量对象,“固定函数”必须在状态变化上找出新的着色器,并且消除了对某些效果的多遍渲染的需要。

这允许例如CPU在单独的线程中进行所有动态矩阵变换,同时忽略静态矩阵并避免CPU-> GPU之间的不必要的传输。 在着色器版本中,无需在2D和3D状态更改之间连续重做相机矩阵。

暂无
暂无

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

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