微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决OpenGL-ES 2.0与OpenGL-ES 1.1,哪个更快?

| 我已经使用OpenGL-ES 1.1编写了一个应用程序,但是想知道通过切换到2.0是否可以提高速度。有没有人对大型多边形模型进行过任何测试?我只想渲染具有不同颜色的三角形,没有幻想。但是,我想渲染约100万个三角形用于比较测试。     

解决方法

OpenGL ES 1.1和2.0提供了两种截然不同的3D图形方式,因此我不知道直接的性能比较是否有意义。如果创建的2.0着色器仅模拟OpenGL ES 1.1的固定功能管线,则可能会看到两者的性能相同。 Apple的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每秒可处理约500,000个三角形,而第一代iPad则可处理约200万个三角形。我还没有完全对更快的iPad 2进行基准测试,但是我的早期测试表明它的速度约为每秒8,000,000-10,000个三角形。即使在最快的设备上,在最好的设备上,一百万个三角形的场景中,您也只能获得约10 FPS。奇怪的是,您不需要那种几何尺寸,所以我会尽我所能减少这种尺寸。     ,ES 2.0中的性能提升不是来自渲染单个VBO,而是通过 1)自定义着色器中的性能调整仅执行所需的最低要求,而不是更常规的固定功能 2)由于简化了矩阵流水线并删除了矩阵堆栈和“固定函数”,因此渲染了大量对象,这必须在状态更改时找出新的着色器,并且无需进行多遍渲染一些影响。 这允许例如CPU在单独的线程中执行所有动态矩阵转换,同时忽略静态矩阵,并避免在CPU-> GPU之间进行不必要的传输。在着色器版本中,无需在2D和3D状态更改之间连续重做相机矩阵。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。