什么是Direct3D? 这是一个API,不是吗? 它是由Windows还是由graphics卡实现?
如果graphics卡实现Direct3D API,为什么其他操作系统不能使用graphics卡上的Direct3D资源?
如果Direct3D由Windows实现,则必须使用graphics卡资源,例如OpenGL或OpenCL。 如果Direct3D调用不直接连接到显卡,则由于中间调用,速度会变慢。
请帮助我了解Direct3D是什么。
如何将Direct3D / WPF / DWM窗口捕获到位图中?
不同显卡上的DirectXfunction
在windows / direct3d中使用ttf文件中的字体
如何在DirectX 11桌面应用程序中更改窗口大小
当Windows UAC提示被触发时是否有WinAPI消息?
如何找出真正的屏幕刷新率(而不是整数)
使用GeForce 960M在笔记本电脑上初始化D3D12debugging接口失败
如何使用包装在ComPtr中的Direct3D 11指针获取11.1接口?
渲染Windows截图捕获位图为DirectX纹理
OpenGL闪烁/损坏与窗口resize和DWM活动
什么是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,如上所述。
Direct 3D是由Microsoft创建的图形API。 它在功能上与opengl相似。 OpenGL是一个竞争的3D图形API,是一个开放标准。 D3D不需要OpenGL的功能。
卡制造商决定要实施哪些API。 大多数情况下都包含DirectX(包括Direct3D)和可能的OpenGL。
因为它不直接进入卡牌,卡牌D3D又称为驱动程序,但是这种方式并不重要。
Direct3D是由微软开发的API,旨在帮助开发人员渲染3D图形。 OpenGL和Direct3D是两个独立的API,但它们必须使用制造视频卡的公司开发的驱动程序与视频卡连接。 这两个API(Direct3D和OpenGL)都必须通过驱动程序才能访问视频卡,并且它们的速度取决于它们在视频卡驱动程序中的设计和实现。
OpenCL是不同的 – 它旨在帮助开发人员编写在GPU上执行通用计算的程序(而不仅仅是图形)。 OpenCL与CUDA相差无几,但后者仅在NVIDIA显卡上受支持。 使用CUDA而不是OpenCL可能会有一些优势,具体取决于您的目标系统,因为在CUDA API被接受到OpenCL API之前,NVIDIA可以为其提供新的功能。 但是,即使OpenCL和CUDA也必须连接到驱动程序才能在GPU上完成任何操作。
正如你所知道的,Direct3D只能在微软和Wine上工作(大部分),但是它作为API的结构与OpenGL有很大的不同。 Direct3D使用结构,在其API中包含更多的OOP元素,而OpenGL则充当状态机,缺乏任何结构或OOP功能。 Direct3D的功能往往比OpenGL快一点,因为它的设计并不是为了最大程度地兼容各种设备; 另一方面,由于在其API中增加新特性的内在困难,OpenGL在采用新特性方面通常表现出更多的惯性(Khronos集团受CAD行业以及其他许多人的影响很大,所以它必须满足广泛的需求)。 Khronos集团最终在OpenGL中采用异步API调用所花费的时间就是这个事实的证明,并导致许多人对OpenGL失去信心。
但是,OpenGL是跨平台的,得到了苹果公司的支持,可以在所有的操作系统上运行。 你可以很容易地使用它与许多流行的窗口工具包(Qt,SDL,FreegluT,JogAmp,gtk等),并有信心,如果你写得很好,你的应用程序将在其他操作系统上编译。 与Direct3D不同,OpenGL API是一个开源行业标准。
就性能而言,关于哪一个更快,仍然值得商榷:取决于你如何构建你的程序或批量调用,这可能会改变。 但是,除非您已经测试了您的应用程序并且有证据表明API的选择是您的瓶颈的原因,否则性能不应该真正成为您使用哪个API的考虑因素。
维基百科 :
Direct3D是Microsoft DirectX API子系统组件。 Direct3D的目标是抽象图形应用程序和图形硬件驱动程序之间的通信。 它呈现得像一个与GDI相当的水平的薄抽象层(见附图)。 Direct3D包含许多GDI所缺乏的功能。
Direct3D是立即模式图形API。 它为每个视频卡3D功能(转换,裁剪,照明,材质,纹理,深度缓冲等)提供了一个低级界面。 它还有一个更高级别的保留模式组件,现在已经正式停止。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。