OpenGL 架构

2020-08-07  本文已影响0人  远方竹叶

CPU 与 GPU 的架构

CPU&GPU.png

CPU 和 GPU 其设计目标就是不同的,它们分别针对了两种不同的应用场景。CPU 是运算核心与控制核心,需要有很强的运算通用性,兼容各种数据类型,同时也需要能处理大量不同的跳转、中断等指令,因此 CPU 的内部结构更为复杂。而 GPU 则面对的是类型统一、更加单纯的运算,也不需要处理复杂的指令,但也肩负着更大的运算任务。

CPU内部组成.png

CPU 拥有更多的缓存空间 Cache 以及复杂的控制单元,计算能力并不是 CPU 的主要诉求。CPU 是设计目标是低时延,更多的高速缓存也意味着可以更快地访问数据;同时复杂的控制单元也能更快速地处理逻辑分支,更适合串行计算。

GPU内部组成.png

GPU 拥有更多的计算单元 Arithmetic Logic Unit,具有更强的计算能力,同时也具有更多的控制单元。GPU 基于大吞吐量而设计,每一部分缓存都连接着一个流处理器(stream processor),更加适合大规模的并行计算。

OpenGL 渲染架构

由于 Open GL 是基于 C 的 API,因此它非常便携且受到广泛支持。作为 C API,它与基于 Objective-C 的 Cocoa 应⽤程序无缝成。 Open GL 提供应用程序用于⽣成 2D 或 3D 图像的函数。您的应用程序将渲染的图像呈现给屏幕或将它们复制回⾃己的内存。

Open GL 规范没有提供⾃己的窗口层。它依赖于 OS X 定义的功能来将 Open GL 绘图与窗⼝系统集成。您的应用程序创建 OS X Open GL 渲染上下文并将渲染目标附加到其上(称为可绘制对象)。渲染上下文管理 Open GL 状态更改和通过调用 OpenGL API 创建的对象。

数据传递

客户端和服务器进行数据传递的通道有三种

通道类型 参数类型 可传入的着色器
Attributes 纹理坐标 、光照法线、顶点坐标 、颜色数据 顶点着色器
Uniform 变换矩阵,材质,光照参数和颜色等信息 顶点着色器、片元着色器
Texture Data 纹理 顶点着色器、片元着色器
上一篇 下一篇

猜你喜欢

热点阅读