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

推荐订阅源

大猫的无限游戏
大猫的无限游戏
H
Help Net Security
The Cloudflare Blog
Y
Y Combinator Blog
A
Arctic Wolf
Cyberwarzone
Cyberwarzone
G
Google Developers Blog
Recent Announcements
Recent Announcements
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
博客园 - Franky
罗磊的独立博客
Martin Fowler
Martin Fowler
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 三生石上(FineUI控件)
N
News and Events Feed by Topic
F
Fortinet All Blogs
N
News | PayPal Newsroom
J
Java Code Geeks
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
博客园 - 聂微东
S
Securelist
C
CERT Recently Published Vulnerability Notes
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
S
Security Affairs
NISL@THU
NISL@THU
A
About on SuperTechFans
PCI Perspectives
PCI Perspectives
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
AWS News Blog
AWS News Blog
GbyAI
GbyAI
C
Cyber Attacks, Cyber Crime and Cyber Security
V
Vulnerabilities – Threatpost
D
Docker
P
Proofpoint News Feed
W
WeLiveSecurity
Help Net Security
Help Net Security
The GitHub Blog
The GitHub Blog
The Last Watchdog
The Last Watchdog
The Hacker News
The Hacker News
博客园 - 叶小钗

博客园 - 八爻老骥

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