为什么要学DirectX?

DirectX的位置

老子云,道生一,一生二,二生三,三生万物。也就是所谓的九九归一,万变不离其宗,所有在计算上运行的程序,最终都是一条条在CPU上执行的二进制。计算机的硬件就是道,硬件的性能直接给出算计机的运算能力上限,操作系统就是道生出来的一,运行在系统下的各种编译环境、SDK就是一生出来的二,在各种开发运行环境下建立起来的各种程序框架、辅助工具,就是二生出来的三,最后我们看到的各种应用和系统,就是三上生出来的万物。计算机硬件就如同八卦中的乾位,应用系统就如同坤位,这两者是计算机系统的两极,硬件性能太好没有配套的软件系统也是白搭,同样软件应用太过强大,也容易计算机系统的崩溃,所以追求哪个极端都是不对的,我们做系统不可堆硬件,也不可无节制地写软件,为了这两者两极的协调和平衡,我们就要站在一个中间的位置,一面充分利用硬件的性能,一面建立更友好的接口给上层系统使用。DirectX一方面封装了硬件的调用,一方面开放了许多接口给其它系统调用,所以DirectX是硬件和软件之间一个纽带,它的存在给硬件和软件制造了一个平衡。

DirectX是关于界面的

正常的人类主要是靠眼睛来感知世界的,所以无论计算机,还是移动设备都会有显示设备。我们通过在屏幕的图像找到与计算机进行交互,让计算机完成相关的任务,以及得到相应的计算结果。事实上,在编写程序的时候,有相当一部分工作的内容是程序界面显示有关的。因而有关前端的开发技术更新换代是非常频繁的,各种框架层出不穷,令人眼花缭乱,也让前端开发人员痛苦不已,刚学会MFC,就来了winform,刚玩熟MⅤC,又流行微服务+mvvm了,刚积累了几年的PC开发经验,移动智能设备开发又变成主流了……不过,有一点是肯定的,不管技术再怎么更新,潮流再怎么转变,都是为了生成用户界面,也就是在屏幕上看到的最终图形。说到底,都是由显卡来成像的,而显卡的成像都是DirectX这样的底层接口来控制的。

DirectX的典型应用

可能大多数的程序员都是做应用系统的,而不像图形程序员那样密切地关注DirectX这个的图形接口,况且DirectX更多的是3D的方面的加速,而我们基本上做的是2D图形,所以不在意DirectX也是很正常的。不过,传统的图形操作接口,比如Windows下的GDI,它的作用就是使用CPU生成位图,然后写入到显卡的缓存中,最后输出到显示器上,根据显示大分辨率的不同,CPU生成一个画面时,就要迭代生成每个像素点的颜色,如果是动态的画面,CPU就要不停地重绘这些画面,用于其它计算的CPU时间就会减少,从而降低了应用程序的性能。为了提升桌面应用的性能,微软弄了一个基于DirectX的WPF,WPF是个XAML和C#表示的系统,实际上就是个上层的开发框架,最终这些XML和C#代码转换成DirectX的数据和命令。还有些建模工具,3D打印软件,某些带3D展示的软件(比如PPT)也是基于DirectX的图形接口。

DirectX的终极奥义

随着人们生活水平的提高,以及软硬件技术的不断发展,平面的东西日亦不能满足需求。虚拟现实(VR)变得流行,可以想像,未来的电商在商品展示的时候,可能并不是小图放大这么简单,我们可以戴上VR眼镜,足不出户就可以达到逛实体店一样的体验。当然现在已经存在像Unity、OGRE、UE、C4D等等这类的工具,但它们仅限于某一具体的领域的开发,比如游戏、建模、影视创作等。但如果在一般的系统种嵌入3D、VR的应用,显然这些工具引擎可能是不太全时宜的,我们多少要对这些工具进行一些改造,这就涉及到了基础图形的开发。如果是在Windows上开发,我们可以将DirectX作为首选,而且掌握了DirectX的相关概念后,再去研究OPENGL这样的东西,就非常轻松了。

猜你喜欢

转载自www.cnblogs.com/icoolno1/p/12784891.html