OpenGL和DirectX

309 阅读5分钟

一、前言

得益于3d技术的高速发展,我们能在电子设备里,拥有到跟现实世界一样五彩缤纷的三维世界。

这里面主要的两大功臣就是OpenGL和DirectX。

今天我们就来看看这两者到底是什么,两者之间又有什么关系呢,来一起看看吧。

二、OpenGL

1、简介

OpenGL(英语:Open Graphics Library,译名:[开放图形库]或者“[开放式图形库]”)是用于渲染[2D])、3D矢量图形的跨语言、跨平台的[应用程序编程接口]API)。这个接口由近350个不同的[函数调用]fromModule=lemma_inlink)组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统(DirectX)是仅用于[Microsoft Windows]上的。OpenGL常用于CAD、虚拟实境程序和电子游戏开发。

OpenGL的高效实现(利用了图形加速硬件)存在于[Windows],部分[UNIX]和[mac os]系统。

2、功能构成

由7部分功能构成。

  1. 建立3D模型: OpenGL同时支持2d和3d的物体绘制函数。
  2. 图形变换: OpenGL利用基本变换以及投影变换处理图形。基本变换用在2d图形,投影变换用在3d图形,可以减少计算时间,从而提高渲染速度。
  3. 颜色模式: OpenGL库中的颜色模型:使用较为广泛的RGBA模式以及颜色索引模式(color index),色彩丰富。
  4. 光照、材质的设置: OpenGL库中包含了多种光照的类型。材质是用光反射率来表示的。其原理是基于人眼的原理,场景中的物体是由光的红绿蓝的分量以及材质的红绿蓝的反射率的乘积后所形成的颜色值。
  5. 纹理映射: 纹理指的是物体表面的花纹。OpenGL库中集合了对于物体纹理的映射处理方式,能够十分完整的复现物体表面的真实纹理。
  6. 图像增强功能和位图显示的扩展功能: OpenGL的功能包括像素的读写、复制外,以及一些特殊的图像处理功能:比如,融合、反走样、雾的等等特殊的处理方式。对于图像的重现和处理,可以使得效果更有真实感,逼真。
  7. 双缓存功能: OpenGL创新性的运用了双缓存形式。计算场景、生成画面图像、显示画面图像分别将其由前台缓存和后台缓存分开处理,大大提高了计算机的运算能力以及画面的显示速度

三、 DirectX

1、简介

DirectX(Direct eXtension,简称DX)是由微软公司(之前也是OpenGL的开发者之一,于2003年3月退出)创建的多媒体,是一种[应用程序接口API]。 它可以让windows平台下的游戏或者程序更简单更高效的执行3d渲染,同时还提供给设计开发人员一个共同的硬件驱动标准,统一标准让开发者们,不必为了每一个硬件厂商品牌编写不同的驱动程序,也降低了用户安装和设置硬件的复杂度,既方便了开发者也方便了用户,这波双赢。目前DirectX也已经广泛应用在windows系统、xbox等微软系列的电子游戏开发。

2、构成

按性质分类

  1. 显示部分: 显示部分担任[图形处理]的关键,分为DirectDraw(DDraw)和Direct3D(D3D),前者主要负责2D图像加速。它包括很多方面:我们播放[mpg]、[DVD]电影、看图、玩[小游戏]等等都是用的DDraw,你可以把它理解成所有[划线]的部分都是用的DDraw。后者则主要负责3D效果的显示,比如CS中的场景和人物等等,都是使用了DirectX的Direct3D。
  2. 声音部分: 声音部分中最主要的[API]是DirectSound,除了播放声音和处理混音之外,还加强了3d音效,并提供了[录音功能]。我们前面所举的声卡兼容的例子,就是利用了DirectSound来解决的。
  3. 输入部分: 输入部分DirectInput可以支持很多的游戏输入设备,它能够让这些设备充分发挥最佳状态和全部功能。除了键盘和鼠标之外还可以连接手柄、摇杆、[模拟器]等。
  4. 网络部分: 网络部分DirectPlay主要就是为了具有网络[功能游戏]而开发的,提供了多种[连接方式],TCP/IP,[IPX],[Modem],串口等等,让玩家可以用各种连网方式来进行对战,此外也提供网络对话功能及[保密措施]。

不过就是显示部分的Direct3D表现过于优秀,导致其他部分黯淡无光。

四、两者之间的对比

1、功能上

OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。

而DirectX是一种[应用程序接口](API),同时提供统一的硬件标准,是完整的一套多媒体接口方案

2、兼容性上

DirectX兼容性差,仅支持windows系统(至少win7系统了,要DirectX11,win10自带DirectX12),使用 DirectX 可访问显卡与声卡的功能。

OpenGL兼容性较好,OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。

ps: 我是地霊殿__三無

Snipaste_2022-07-19_15-30-26.jpg