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


Буферы вершин FVF (Direct3D 9)

Задание параметра FVF метода IDirect3DDevice9::CreateVertexBuffer ненулевого значения, которое должно быть допустимым кодом FVF, означает, что содержимое буфера должно характеризоваться кодом FVF. Буфер вершин, созданный с помощью кода FVF, называется буфером вершин FVF. Для некоторых методов или использования IDirect3DDevice9 требуются буферы вершин FVF, а для других — буферы вершин, не относящиеся к FVF. Буферы вершин FVF необходимы в качестве аргумента буфера вершин назначения для IDirect3Device9::P rocessVertices.

Буферы вершин FVF можно привязать к исходному потоку данных для любого номера потока.

Наличие компонента D3DFVF_XYZRHW в буферах вершин FVF указывает на то, что вершины в этом буфере обработаны. Буферы вершин, используемые для буферов вершин назначения IDirect3Device9::P rocessVertices , должны быть обработаны после обработки. Буферы вершин, используемые для входных данных шейдера фиксированной функции, могут быть предварительно обработаны или постобработка. Если буфер вершин выполняется после обработки, то шейдер фактически обходится и данные передаются непосредственно в модуль примитивной обрезки и настройки.

Буферы вершин FVF можно использовать с шейдерами вершин. Кроме того, потоки вершин могут представлять те же форматы вершин, что и буферы вершин, не относящиеся к FVF. Их не нужно использовать для ввода данных из отдельных буферов вершин. Дополнительная гибкость новых потоков вершин позволяет приложениям, которым необходимо хранить данные отдельно, работать лучше, но это не требуется. Если приложение может заранее поддерживать данные с чередованием, это повышает производительность. Если приложение будет чередовать данные только перед каждым вызовом отрисовки, оно должно включить API или оборудование для этого с несколькими потоками.

Наиболее важным аспектом производительности вершин является использование 32-байтовой вершины и поддержание правильного порядка кэша.

Буферы вершин