DirectX 版本历史

memetao 于 2021-09-04 发布

D3D的历史

维基百科

几个重点:

DXGI

全称是”Microsoft DirectX Graphics Infrastructure”。

什么时候推出的: 好像win7 sp1就有了, 无从考证。

DXGI是干嘛的:

举个例子,在以前图形子系统都归D3D,结果D3D8/D3D9分别有一套代码用来管理swap chain。在Vista+里,图形API越来越多,D3D9/D3D10/D3D11/D3D12,都来一套swap chain太没意义了。于是重构成所有API可以共享一份swap chain的代码,这就放在DXGI。除此之外,窗口全屏化之类的事情也都归DXGI了,你可以认为屏幕输出的部分都归DXGI。后来DXGI又加了一些底层的功能,用来跟DWM打交道,比如拷贝混合后的屏幕,设备旋转,跨屏幕窗口。。。还有些未公开的,我就不说了。(作者:叛逆者, 链接:https://www.zhihu.com/question/36501678/answer/67786884)

####DxgiFactory

不同windows版本能够创建的DxgiFactory版本不一样:

Do not mix the use of DXGI 1.0 (IDXGIFactory) and DXGI 1.1 (IDXGIFactory1) in an application. Use IDXGIFactory or IDXGIFactory1, but not both in an application.

因此, 程序中使用D3D的时候需要确保代码是统一的。比如,使用统一的封装来创建DxgiFactory。

OBS使用CreateDXGIFactory1来创建factory, 然后在这基础上继续往上枚举(需要相关功能的时候)。

WDDM

WDDM是一个体系结构

Direct3D 9Ex和Direct3D 10均构建于WDDM之上,只有透过WDDM才能在Vista上使用Direct3D。

图形硬件供应商必须提供用户模式显示驱动程序和显示微型端口驱动程序 (也称为内核模式显示驱动程序或 KMD) 。

WDDM 版本内容

Window模式和Exclusive模式

windowed模式下,必须使用back buffer。在Exclusive模式下,Direct3D直接呼叫显示卡驱动程式,而不通过GDI。