Перечисление D3D10_MAP (d3d10.h)
Определяет ресурс, к которым ЦП будет обращаться для чтения и записи. Приложения могут объединять один или несколько из этих флагов.
Синтаксис
typedef enum D3D10_MAP {
D3D10_MAP_READ = 1,
D3D10_MAP_WRITE = 2,
D3D10_MAP_READ_WRITE = 3,
D3D10_MAP_WRITE_DISCARD = 4,
D3D10_MAP_WRITE_NO_OVERWRITE = 5
} ;
Константы
D3D10_MAP_READ Значение: 1 Ресурс сопоставляется для чтения. Ресурс должен быть создан с доступом на чтение (см . D3D10_CPU_ACCESS_READ). |
D3D10_MAP_WRITE Значение: 2 Ресурс сопоставляется с записью. Ресурс должен быть создан с доступом на запись (см . D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_READ_WRITE Значение: 3 Ресурс сопоставляется для чтения и записи. Ресурс должен быть создан с доступом на чтение и запись (см . раздел D3D10_CPU_ACCESS_READ и D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_WRITE_DISCARD Значение: 4 Ресурс сопоставляется с записью; Предыдущее содержимое ресурса будет неопределенным. Ресурс должен быть создан с доступом на запись (см . D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_WRITE_NO_OVERWRITE Значение: 5 Ресурс сопоставляется с записью; существующее содержимое ресурса невозможно перезаписать (см. примечания). Этот флаг действителен только для буферов вершин и индексов. Ресурс должен быть создан с доступом на запись (см . D3D10_CPU_ACCESS_WRITE). Не может использоваться для ресурса, созданного с флагом D3D10_BIND_CONSTANT_BUFFER . |
Комментарии
Это перечисление используется в ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map и ID3D10Texture3D::Map.
Значение D3D10_MAP_WRITE_NO_OVERWRITE
D3D10_MAP_WRITE_NO_OVERWRITE означает, что приложение не будет записывать данные, которые использует этап сборщика входных данных (IA). Взамен GPU позволяет приложению выполнять запись в другие части того же буфера. Приложение должно гарантировать, что оно не записывает данные, используемые на этапе IA.Например, рассмотрим буфер, показанный на следующей схеме. Если был выполнен вызов Draw, использующий вершины 4–6, приложение, вызывающее Map в этом буфере, должно гарантировать, что оно не записывает данные в вершины, к которым вызов Draw будет обращаться во время отрисовки.
Однако обеспечить это может быть сложно, так как GPU часто имеет много кадров за ЦП с точки зрения того, какой кадр обрабатывается в данный момент. Отслеживание того, какие разделы ресурса используются из-за вызовов, выполненных от 2 до 5 кадров назад, является трудным и подверженным ошибкам. Поэтому при использовании D3D10_MAP_WRITE_NO_OVERWRITE рекомендуется, чтобы приложения записылись только в неинициализированные части ресурса.Общее использование D3D10_MAP_WRITE_DISCARD с D3D10_MAP_WRITE_NO_OVERWRITE
D3D10_MAP_WRITE_DISCARD и D3D10_MAP_WRITE_NO_OVERWRITE обычно используются в сочетании с буферами динамических индексов и вершин, хотя их также можно использовать с динамическими текстурами.Обычно эти два флага используются для заполнения динамических буферов индексов и вершин геометрией, которая может быть видна по текущему положению камеры. При первом вводе данных в буфер для заданного кадра вызывается map с D3D10_MAP_WRITE_DISCARD; это делает недействительным предыдущее содержимое буфера. Затем буфер заполняется всеми доступными данными.
Последующие операции записи в буфер в пределах того же кадра должны использовать D3D10_MAP_WRITE_NO_OVERWRITE. Это позволит ЦП получить доступ к ресурсу, который потенциально используется GPU при условии соблюдения ранее описанных ограничений.
Требования
Требование | Значение |
---|---|
Заголовок | d3d10.h |