惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
腾讯CDC
GbyAI
GbyAI
I
InfoQ
博客园 - Franky
G
Google Developers Blog
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
Vercel News
Vercel News
博客园_首页
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium
V
V2EX
T
The Blog of Author Tim Ferriss
M
MIT News - Artificial intelligence
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog

博客园 - 八爻老骥

Gradle模块化项目中使用了非模块化库的编译方法 系统架构一一前端技术 系统架构一一ORM的应用 WPF下的RibbonApplicationMenu控件自定义 系统架构——多线程的应用 系统架构——前后端分离 D3D实战-在窗口中画一个三角形 - 八爻老骥 - 博客园 DirectX 入门1-初识DirectX Tool Kit DirectX 12 版 俄罗斯方块 WPF俄罗斯方块改进版 - 八爻老骥 - 博客园 【编程漫谈】用JAVA画多边形 【编程漫谈】单机与联机 往Angular应用程序中添加DevExtreme 【编程漫谈】程序的运行环境 创建DevExtreme应用程序 【编程漫谈】程序的运行流程 【编程漫谈】程序的进入与退出 【编程漫谈】Hello world! WPF实战俄罗斯方块
为什么要学DirectX?
八爻老骥 · 2020-04-27 · via 博客园 - 八爻老骥

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这样的东西,就非常轻松了。