使用多线程创建对象

使用 ID3D11Device 接口创建资源和对象,使用 ID3D11DeviceContext进行呈现

下面是有关如何创建资源的一些示例:

多线程注意事项

应用程序可以实现的资源创建和呈现并发程度取决于驱动程序实现的多线程支持级别。 如果驱动程序支持并发创建,则应用程序应该少得多的并发问题。 但是,如果驱动程序不支持并发对象创建,则并发量会非常有限。 若要了解驱动程序中可用的支持量,请查询驱动程序以获取 D3D11_FEATURE_DATA_THREADING 结构的 DriverConcurrentCreates 成员的值。 有关检查多线程的驱动程序支持的详细信息,请参阅 如何:检查驱动程序支持

并发操作不一定能提高性能。 例如,创建和加载纹理通常受内存带宽限制。 尝试创建和加载多个纹理的速度可能不如一次执行一个纹理,即使这会使多个 CPU 核心处于空闲状态。 但是,使用多个线程创建多个着色器可以提高性能,因为此操作对系统资源(如内存带宽)的依赖较少。

当驱动程序和图形硬件支持多线程时,通常可以通过将指针传递到 pInitialData 参数中的初始数据来更有效地初始化新创建的资源 (例如,在调用 ID3D11Device::CreateTexture2D 方法时) 。

多线程