Поделиться через


Создание объектов с помощью многопоточности

Используйте интерфейс ID3D11Device для создания ресурсов и объектов, а для отрисовкиID3D11DeviceContext.

Ниже приведены некоторые примеры создания ресурсов.

Рекомендации по многопоточности

Степень параллелизма при создании и отрисовке ресурсов, которую может достичь приложение, зависит от уровня поддержки многопоточности, которую реализует драйвер. Если драйвер поддерживает параллельное создание, то в приложении должно быть гораздо меньше проблем с параллелизмом. Однако если драйвер не поддерживает параллельное создание объектов, объем параллелизма крайне ограничен. Чтобы понять объем поддержки, доступный в драйвере, запросите у драйвера значение члена DriverConcurrentCreatesструктуры D3D11_FEATURE_DATA_THREADING . Дополнительные сведения о проверке поддержки драйверов для многопоточности см. в разделе Практическое руководство. Проверка поддержки драйверов.

Параллельные операции не обязательно приводят к повышению производительности. Например, создание и загрузка текстуры обычно ограничивается пропускной способностью памяти. Попытка создать и загрузить несколько текстур может быть не быстрее, чем выполнять одну текстуру за раз, даже если при этом несколько ядер ЦП простаивают. Однако создание нескольких шейдеров с помощью нескольких потоков может повысить производительность, так как эта операция меньше зависит от системных ресурсов, таких как пропускная способность памяти.

Если драйвер и графическое оборудование поддерживают многопоточность, вы можете более эффективно инициализировать созданные ресурсы, передав указатель на исходные данные в параметре pInitialData (например, в вызове метода ID3D11Device::CreateTexture2D ).

Многопоточность