Создание объектов с помощью многопоточности
Используйте интерфейс ID3D11Device для создания ресурсов и объектов, а для отрисовки — ID3D11DeviceContext.
Ниже приведены некоторые примеры создания ресурсов.
- Практическое руководство. Создание буфера вершин
- Практическое руководство. Создание буфера индекса
- Практическое руководство. Создание буфера констант
- Практическое руководство. Инициализация текстуры из файла
Рекомендации по многопоточности
Степень параллелизма при создании и отрисовке ресурсов, которую может достичь приложение, зависит от уровня поддержки многопоточности, которую реализует драйвер. Если драйвер поддерживает параллельное создание, то в приложении должно быть гораздо меньше проблем с параллелизмом. Однако если драйвер не поддерживает параллельное создание объектов, объем параллелизма крайне ограничен. Чтобы понять объем поддержки, доступный в драйвере, запросите у драйвера значение члена DriverConcurrentCreatesструктуры D3D11_FEATURE_DATA_THREADING . Дополнительные сведения о проверке поддержки драйверов для многопоточности см. в разделе Практическое руководство. Проверка поддержки драйверов.
Параллельные операции не обязательно приводят к повышению производительности. Например, создание и загрузка текстуры обычно ограничивается пропускной способностью памяти. Попытка создать и загрузить несколько текстур может быть не быстрее, чем выполнять одну текстуру за раз, даже если при этом несколько ядер ЦП простаивают. Однако создание нескольких шейдеров с помощью нескольких потоков может повысить производительность, так как эта операция меньше зависит от системных ресурсов, таких как пропускная способность памяти.
Если драйвер и графическое оборудование поддерживают многопоточность, вы можете более эффективно инициализировать созданные ресурсы, передав указатель на исходные данные в параметре pInitialData (например, в вызове метода ID3D11Device::CreateTexture2D ).
Связанные темы