为什么 Direct3D 只能在 Windows 上工作?

Squ*_*all 5 windows graphics gpu direct3d

什么是 Direct3D?它是一个 API,不是吗?它是由 Windows 实现的还是由图形卡实现的?

如果显卡实现了 Direct3D API,为什么其他操作系统不能使用显卡中的 Direct3D 资源?

如果 Windows 实现 Direct3D,则必须使用图形卡资源,例如 OpenGL 或 OpenCL。如果 Direct3D 调用不是直接到显卡,会因为中间调用而变慢。

请帮助我理解什么是 Direct3D。

sle*_*ske 2

什么是 Direct3D?它是一个API,不是吗?是Windows实现的还是显卡实现的?

是的,Direct3D 是一个 API。它(大部分)由 Windows 本身实现。然而,Windows会将相当一部分实际工作分流给显卡的驱动程序,并最终分流给gfx卡本身,因此也可以说gfx卡“实现”了D3D。

如果显卡实现了 Direct3D API,为什么其他操作系统不能使用该显卡的 Direct3D 资源?

他们可以,而且确实这么做了,但只有相对较小(但通常是关键部分)的 D3D 功能是由卡的硬件直接实现的,因此需要在软件方面做更多的工作来实现 D3D。

如果Direct3D是由Windows实现的,它必须使用显卡资源,例如OpenGL或OpenCL。

不,那是一个误会。OpenGL 和 OpenCL 也是 API,并且仅部分由 gfx 硬件实现(就像 D3D 一样)。gfx 硬件通常有一个(专有的)“本机”API,这是 gfx 驱动程序(适用于 D3D 和 OpenGL)使用的。

如果 Direct3D 调用不是直接到显卡,则会由于中间调用而变慢。

不一定有任何“中间调用” - D3D 驱动程序使用卡本机 API,如上所述。