引言 

在与计算机图形的接触中,我一定听说过两个主要的编程接口:OpenGL和DirectX,它们一直在竞争并促进各自的开发。API战争真的很有趣。让我们看看这两个大老板是什么,他们的实力是什么。

 OpenGL是什么 

OpenGL是一个专业的图形程序接口,它定义了一种跨编程语言和跨平台编程接口规范。它用于三维图像(或二维图像),是一个功能强大、易于调用的底层图形库。OpenGL是一个独立于硬件的软件接口,可以在不同的平台之间移植,如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2。因此,支持OpenGL的软件具有良好的可移植性和广泛的应用前景。由于OpenGL是图形的底层图形库,它不提供几何实体原语,不能直接用于描述场景。但是,通过一些转换程序,可以很容易地将三维图形设计软件(如AutoCAD[2])生成的DXF和3DS模型文件转换为OpenGL的顶点数组。市场研究机构JonPeddie Research预测OpenGL3.1将安装超过1亿个图形硬件。AMD、Nvidia和S3图形图形驱动程序都支持OpenGL 3.0。

 OpenGL-ES是什么 

OpenGL(OpenGL用于嵌入式系统)是OpenGL三维图形API的一个子集。它是为移动电话、PDA和游戏主机等嵌入式设备而设计的。Opengles是一个免费的、跨平台的、功能良好的图形应用程序接口API,用于二维和三维应用程序。专业设计各种嵌入式系统,包括控制台、手机、手持设备、家用电器和汽车。它由一个定义良好的桌面OpenGL子集组成,在软件和图形加速之间创建了一个灵活而强大的底层接口,这是目前在移动游戏中使用的底层图形支持。 

DirectX是什么 

从1995年到1996年,微软推出了一个新的程序来支持在Windows95上运行的游戏,旨在将市场扩展到任天堂和世嘉控制的游戏。然而,微软不想使用已经在NT上可用的OpenGL技术。微软收购了rendermophics,ltd.并收购了3dapi所称的现实实验室。重组后,微软发布了一个新的3dapi,direct3d.microsoft,它实现了direct3d并冻结了OpenGL!发动API战争。这是DirectX的历史!直接扩展(DX)是由微软创建的多媒体编程接口。它用C语言编程,满足COM的要求。广泛应用于Microsoft Windows、Microsoft Xbox、Microsoft Xbox 360和Microsoft Xbox One视频游戏开发,只能支持这些平台。DirectX增强了3D图形和声音的效果,并为设计师提供了通用的硬件驱动程序标准,这样游戏开发者就不必为每个品牌的硬件编写不同的驱动程序,同时也降低了用户安装和硬件设置的复杂性。在字面意义上,直接的x是一个直接的意思,后面的x代表许多意思。从这个角度来看,我们可以看到DirectX是为许多软件提供直接服务的。DirectX不是一个简单的图形API。它是微软开发的一个广泛使用的API。根据其性质,可分为四个部分:显示部分、语音部分、输入部分和网络部分。DirectX已成为一个应用程序平台。目前,DirectX在游戏开发中占有较大的市场份额。

OpenGL和DirectX的工作 

两者都是用于渲染二维或三维图形的图像应用程序编程接口。可以说,这些接口连接上应用程序和下GPU。应用程序向这些接口发送渲染命令,而这些接口又向图形卡驱动程序发送渲染命令。这些图形卡驱动程序真的知道如何与GPU通信。正是他们将OpenGL或DirectX函数调用转换为GPU可理解的语言,他们还负责纹理等。数据转换为GPU支持的格式。

 OpenGL和DirectX的区别 

1 在技术方面 

OpenGL具有很强的可移植性,而DirectX只能在Windows操作系统中使用。它是基于Windows操作系统平台的应用程序接口。OpenGL只是一个图形库。它是一个专业的三维程序界面。OpenGL被设计为只输出,所以它只提供渲染。核心API没有窗口系统、音频、打印和其他输入设备的概念。正是因为这种设计允许它呈现完全独立于操作系统的代码,从而允许跨平台开发。DirectX是微软开发的一种广泛使用的API。它提供了一套多媒体接口解决方案,尤其是在3D图形中。在硬件通信方面,DirectX是一个程序,它可以很容易地确定计算机的硬件性能,然后设置与之匹配的程序参数。此程序使多媒体软件程序能够在具有与DirectX兼容的硬件和驱动程序的基于Windows的计算机上运行,同时确保多媒体程序可以紧急使用高性能硬件。OpenGL是一个独立于硬件的软件接口,可以在任何平台上运行。它在设置与硬件匹配的程序参数方面不如DirectX。目前,硬件开发人员正在加强对IT的支持。

2 在应用方面 

OpenGL仍然是专业高端图形领域不可替代的主角。OpenGL已广泛应用于CAD、内容创作、能源、娱乐、游戏开发和虚拟现实等行业。DirectX适用于多媒体、娱乐、实时三维动画等广泛实用的三维图形计算。在基于Windows平台的游戏开发中,它占据了大部分市场。

参考 

https://blog.csdn.net/yupu56/article/details/81355090 《Unity Shader 入门精要》