图形处理
概述
参考:
- 手把手教你使用OpenCV库(附实例、Python代码解析)
- 公众号-差评,为了把游戏接口做进Windows,这位大佬干翻了微软的管理层。
计算机如何读取图像?
思考以下图片:

我们可以认出它是纽约天际线的图片。 但是计算机可以自己发现这一切吗?答案是不!
计算机将任何图片都读取为一组 0 到 255 之间的值。
对于任何一张彩色图片,有三个主通道——红色(R),绿色(G)和蓝色(B)。它的工作原理非常简单。
对每个原色创建一个矩阵,然后,组合这些矩阵以提供 R, G 和 B 各个颜色的像素值。
每一个矩阵的元素提供与像素的亮度强度有关的数据。
思考下图:

如图所示,图像的大小被计算为 B x A x 3。
注意:对于黑白图片,只有一个单一通道。
图形接口
有位叫 Eric Engstrom微软大佬去世了。这位老哥没有比尔盖茨这么大的名气,但要是没他,我们现在想要在夜之城夜夜笙歌,估计没那么容易。甚至说 Windows 电脑,可能还只是一台主要的生产力工具,就像苹果 Mac 一样。
DirectX
Eric Engstrom 所创立的 DirectX 接口,把 PC 个人电脑,拽进了电子游戏的世界。让玩电脑游戏成为了一种游戏方式。
先是辛辛苦苦从3XM、游 X Sky上找到资源,然后冒着被老妈发现的危险,电脑挂一晚上把游戏下下来。
好不容易下完了解压好,兴奋的打开游戏的 exe 文件,正准备抄起鼠标大杀四方,系统却弹出了这么一个窗口。。。

这个文件其实是 DirectX 的驱动文件,重新装一下 DirectX 最新驱动就行了。
正版游戏在运行之前会有一个自检的环节,来确认电脑中是否有相关的驱动文件。
而上传盗版游戏的黑客,并不会把这部分自检程序放到压缩包里。
这样一来,用户在解压完游戏之后就会发生文件缺失的情况,需要自己去网上找到对应的文件把它补上。
没有 .dll 文件,游戏就跑不起来。
那个时候玩的单机游戏,从CS 、红警、魔兽争霸 3到GTA 罪恶都市、骑马与砍杀、文明 IV等等等等游戏,都是基于DirectX接口开发的。

DirectX的存在,覆盖了整个电脑游戏发展史。
那问题来了,为什么在电脑上的游戏离不开 DirectX 呢?
要解答这个问题,我们得先了解一下图形 API 的发展历史。
早期的软件开发没有统一标准,往往是一个新的硬件出来,程序员就得为它定制开发一套软件来用。
这就造成了硬件与硬件,软件与软件之间并不互通。
比如《仙剑奇侠传》,想要在不同的平台上玩,就需要程序员适配三次。

基于此,在人类的原始生产力懒的驱使下,程序员们发明出了 Application Programming Interface(应用编程接口,简称 API) 。它的出现统一了所有的开发规范,解决了不同硬件需要适配的问题,大大节省了开发的成本。
要是用统一的 API,就不需要重复开发了,直接适配。▼

OpenGL
不过那时候率先登场的 API 的并不是 DirectX ,而是大名鼎鼎的 Glide 和 OpenGL ,还没微软什么事。
Glide 的 API 标准是一家叫 3dfx 的显卡公司创立的,在英伟达崛起之前, 3dfx 的 Voodoo 系列显卡就是当初 3D 游戏的绝对标杆。
不管是古早的《 DOOM 》、《古墓丽影》还是 FPS 始祖游戏《雷神之锤》,都体现出了 API 接口的巨大优势。原本分散的游戏开发者,都聚集到了统一的平台上来做游戏,人多力量大,无数的新技术和好游戏就源源不断的冒出来了。而微软这边一开始其实并不看好游戏领域,根本不想在游戏方面投资。
一方面 Windows 95 系统做的也差不多了,随时准备发布,管理层觉得这时候再做一个游戏编程界面没有太大必要。另一方面从老的 MS-DOS 系统上转移到新的环境里开发,谁也不敢保证会怎么样。
Eric Engstrom 看到了这上面的前景,自己偷偷拉了个三人的小团队,开发起了 DirectX ,顶着微软管理层的压力,把这个项目给做了下来。
到了 1995 年 4 月, DirectX 正式发布,并在后面逐步融合进了 Windows 95 ,为微软打入游戏市场,立下了汗马功劳。
有意思的是,在 Eric Engstrom 开发 DirectX 的过程中,不仅要面对技术上的难题,还要面临微软的上层百般阻挠,面对企业内斗。
这个过程还被写成了一本名为《 Renegades of the Empire 》(《帝国叛逆者》)的书,记述下了那段时间微软内忧外患的处境。
不过至少结果是好的, DirectX 在经过了几个版本的更新之后,已经稳坐了游戏图形 API 的头把交椅。
而 Glide 和 OpenGL 却被命运开了玩笑,相继翻车,给 DirectX 占领市场提供了很大机会。
Glide 翻车是因为 3dfx 的没落,支持 Glide 的游戏及设备越来越少,它不及 Windows 系统有这么多的开发者,又不开源,没多久就顶不住了。
OpenGL 倒是开源的,不过因为内部意见不统一,它逐渐转向了专业图形领域的方向,渐渐弱化了游戏方面的更新。
在更新到了 DirectX 9.0 之后,微软在图形 API 的领域,基本坐稳了龙头老大的位置。
顺带一提,微软的 XBOX 主机用到的也是 DirectX ,这样一来,就形成了一个闭环,但凡厂商想要在主机平台和 PC 平台上开发游戏,就绕不过 DirectX 。
随之而来的就是 N 卡和 A 卡长达 10 年的显卡大战,由于两边都要用到 DirectX 来优化,微软的更新就成了制衡 N 、 A 两家发展的砝码。
Vulkan
OpenGL 的母公司 Khronos 推出了自家的新图形 API Vulkan,意欲动摇 DirectX 的传统优势地位。
Vulkan 作为一个搅局者,他的强势之处在于跨平台的兼容性,它能在 Windows、Linux、Android 三个平台上开发,连接了电脑和手机端。
在底层硬件的兼容方面,Vulkan 会更好一些,游戏开发者能更彻底的榨干显卡的性能。
未来的竞争或许会更势均力敌一些。。。
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.