使用多线程创建对象

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

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

多线程处理注意事项

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

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

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

多线程