Young87

当前位置:首页 >个人收藏

OpenGL* 性能提示: 使用本机格式,实现最佳渲染性能

简介

游戏开发人员经常使用 OpenGL 来处理图形密集型游戏的渲染工作。 OpenGL 是一种用于高效渲染二维和三维矢量图形的应用程序接口。 大部分平台上都有 OpenGL 。

本文演示了使用合适的纹理格式如何改进 OpenGL 性能,特别是使用本机纹理格式将为游戏开发人员提供最出色的 OpenGL 性能。 本文随附一个 C++ 示例应用,它显示了使用各种纹理格式对渲染性能的影响。 请注意,尽管本文涉及与图形游戏开发人员相关的概念,但这些概念适用于使用 OpenGL 4.3 及更高版本的所有应用。 示例代码用 C ++ 编写,专为 Windows* 8.1 和 10 设备而设计。

要求

构建和运行示例应用需要具备以下条件:

采用第六代智能英特尔® 酷睿™ 处理器(代号为 Skylake)的电脑
OpenGL 4.3 或更高版本
Microsoft Visual Studio 2013 或更高版本

Skylake 处理器图形

第六代智能英特尔酷睿处理器也称为 Skylake,提供卓越的二维和三维图形性能,最高可达 1152 GFLOPS。 其多核架构可提高性能并增加每个时钟周期的指令数。

与前几代相比,第六代智能英特尔酷睿处理器具有许多新的优势,可显著提升整体计算性能和视觉性能。 示例增强功能包括一个 GPU,加上 CPU 的增强型计算能力,可提供比之前的英特尔® 处理器显卡高 40% 的图形性能。 第六代智能英特尔酷睿处理器经过重新设计,可提供更高保真度的视频输出,更高分辨率的视频播放,以及对更低功耗系统的更加无缝的响应能力。 Skylake 支持 4K 视频播放和扩展的超频,是游戏开发人员的理想之选。

GPU 内存访问包含原子最小值、最大值以及共享本地内存或全局内存中 32 位浮点值的比较和交换。 这一新架构还为到同一地址的紧接原子提供了性能改进。 平铺资源包括对部分驻留(稀疏)的大型纹理和缓冲区的支持。 读取未映射磁贴会返回零,并且对其的写入操作将被丢弃。 此外还有用于固定 LOD 和获取操作状态的新着色器指令。 现在还支持较大的纹理和缓冲区。 (例如,您最大可使用 128k x 128k x 8B 的细化 2D 纹理。)

由图形 API 提供支持时,无边界资源可将一个着色器可使用的动态资源数量从大约 256 个增加至 2,000,000 个。 这一改变可降低与更新绑定表相关的开销,为程序员提供更高的灵活性。

执行单元也改进了本地 16 位浮点支持。 使用半精度时,这种增强的浮点支持可带来功耗和性能方面的双重优势。

显示功能进一步提供了多平面重叠选项,拥有缩放、转换、颜色校正和显示时组合多个曲面的硬件支持。 曲面可来自使用不同更新频率和分辨率的单独交换链(例如,在放大、较低分辨率的帧渲染基础上组合的全分辨率 GUI 元素),从而提供显著增强。

其架构支持最多三个切片的 GPU(提供 72 个 EU)。 这一架构还提供了更高的功率门控和时钟域灵活性,这是值得利用的。

第 2 课: 使用本机纹理格式,实现最佳渲染性能

任何使用 OpenGL 的人都熟悉纹理。 然而,并非所有纹理都一样,某些纹理格式的渲染性能高于其他格式。 使用硬件本地格式意味着纹理可以“按原样”使用,从而避免不必要的转换。

本课显示了不同格式的影响——在窗口中渲染图像时,本示例在多种不同的纹理格式之间循环切换。 对于每种格式,当前性能以每帧毫秒数和每秒帧数显示。 按空格键可转到列表中的下一个纹理,这样您可以了解哪些格式在硬件上最适用。

示例使用以下格式。 下面的列表基于这一网址的 OpenGL“所需格式”列表…

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 15.玩转Spring Boot 使用Spring security

下一篇: 机器学习中的偏差(bias)和方差(variance)

精华推荐