IDXGI 和 ID3D11Device 和 ID3D11DeviceContext 之间的用法差异
Difference in usage among IDXGI and ID3D11Device and ID3D11DeviceContext
IDXGI和ID3D11DeviceContext之间的用法有什么区别?
据我了解,创建/初始化COM对象使用ID3D11Device,在操作这些COM对象时使用ID3D11DeviceContext,用于确定硬件类型,驱动程序和所有其他兼容性内容使用IDXGI COM。
还有哪些其他区别和用法?
DXGI是用于枚举适配器和输出,创建交换链以及执行帧呈现的基本基础结构。它旨在独立于DirectX的特定版本,并且它应该不会在版本之间发生太大变化。
回到 Direct3D 10.x,这些方法主要在一个ID3D10Device
中。对于 Direct3D 11,这分为两部分:
-
ID3D11Device
就是创建纹理、顶点缓冲区、着色器等对象。 -
ID3D11DeviceContext
用于设置状态和绘图。
拆分的原因很简单:ID3D11Device
上的所有方法都是线程安全的(即可以从多个线程调用并在内部使用锁定),而ID3D11DeviceContext
上的所有方法都是无线程的(即一次只能从单个线程调用,因为这些方法不使用锁定)。
您应该查看 2010 年的演示文稿:DirectX 11 技术更新。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 这个指针在c++中的用法
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 线程之间的布尔停止信号
- 复制和交换习惯用法与移动操作之间的交互
- C++ 中函数中 Const 用法之间的差异
- 调试和发布配置 (c++) 中内置的共享库之间的用法有何区别?
- 视图和控制器之间接口的习惯用法
- reinterpret_cast用法之间的差异
- C++ get 和类型转换之间的用法有什么区别?我应该使用哪一个?
- IDXGI 和 ID3D11Device 和 ID3D11DeviceContext 之间的用法差异