什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?

大家好 , 欢迎来到霍夫日记 , 我是霍夫 。 今天我来说说什么是directx?什么是OpenGL?为什么玩单机游戏的时候 , 经常弹窗提示缺少这些程序组件无法运行游戏呢?
某天 , 你刚下好的三A大作正版游戏终于下载完毕了 , 心里想着可以开玩了 , 赶紧点击EXE程序运行 。
于是出现以下画面
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
怎么打不开不了啊?计算机中提示缺少d3directx9.dll是怎么回事?
我们玩游戏天天都得接触directx和OpenGL , 没有这些程序游戏就玩不了了 。 可是你有没有想过它们究竟是干嘛用的呢?这个OpenGL又是什么鬼呢?
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
在很早很早以前 , 软件开发缺乏标准编程 , 可以说是一对一的 。 我这串代码就对应着一种硬件一种系统 , 这样一来呢 , 开发的过程就极其的繁琐 , 毕竟你这软件可是一对一高端定制 , 你想让全世界的设备都用上你的软件 , 那对不起 , 你得一个个去找软硬件厂商 , 一个个去做适配吧 。
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
那这个时候我们就需要一个中间层 , 在不同的软件 , 不同的硬件之间进行沟通 , 这就是api应用编程接口 。
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
api就相当于是一系列函数的集合,程序可以直接通过这些函数进行构建 , 不需要访问更底层的东西 。 这样一来 , 软件开发的门槛就降低了 。
api的意义在于简化编程的操作 。
打个比方 , 你现在想和法国人交流 , 如果没有翻译的话 , 你就只能自学法语 。 可这也太麻烦了吧 , 我就想搭个话 , 喝两口法国红酒 , 我还得再学一门外语才行吗?
当然不必这么麻烦 , 你找个翻译不就行了吧 。 这api就是你的翻译 , 尽管翻译会造成延迟 , 会降低一点交流的效率 , 你得额外花点时间等翻译说完 , 但至少你可以听懂法国佬说话了 , 可以正常交流正常喝酒了 , 这才是最重要的 。
说到这里你也应该猜到了 , 我们亲爱的directx和OpenGL正是api 。
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
确切的说呢 , OpenGL是一种图形api , 而directx则是许多各种各样api的集合体 。 其中当然也包括图形api--direct3D 。
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
图形api , 猜猜这个名字都知道这是为图形计算设计的 , 那么玩游戏说的最多也是图形api , 这里我们用direct3D来举例子 , 在游戏中它的作用差不多是这个样子 。
什么是OpenGL?什么是direct x?单机游戏运行为什么与它们有关?
文章图片
承上启下嘛 , 它就相当于是游戏引擎和显卡驱动、系统层之间的桥梁 , 是同时精通上层下层各种语言的翻译官 。
OpenGL其实也是类似的一个工作流程 , 但是它相比direct3D更加开放一些 。 因为OpenGL是由非盈利性的行业联盟khronosgroup牵头的 , 它是跨平台的 , 对于系统没有限制 , 你不仅可以在windows上用 , 也可以在macos、linux上使用 , 甚至还可以在安卓和ios上使用它们的阉割版本OpenGLes 。
相比之下呢 , direct3D就只允许在微软自家的windows和xbox上使用了 。 此外 , OpenGL的学习门槛也更低 , 开发人员更容易上手 。 但是它的缺点就是效率往往不如direct3D , 新特性的更新往往也比较慢一些 。 说白了就是不如direct3D先进吧 。 但这两种图形api地位是一样重要的 。

相关经验推荐