структура D3DHAL_DP2VERTEXSHADER (d3dhal.h)

Только версии DirectX 8.0 и более поздних версий.

Структура D3DHAL_DP2VERTEXSHADER задает текущий шейдер вершин или удаляет шейдер вершин в зависимости от полученного (D3DDP2OP_SETVERTEXSHADER или D3DDP2OP_DELETEVERTEXSHADER) кода в D3dDrawPrimitives2.

Синтаксис

typedef struct _D3DHAL_DP2VERTEXSHADER {
  DWORD dwHandle;
} D3DHAL_DP2VERTEXSHADER;

Члены

dwHandle

Дескриптор отображения.

Замечания

Все драйверы уровня DirectX 8.0 должны поддерживать маркер D3DDP2OP_SETVERTEXSHADER, так как он отправляется, даже если драйвер не поддерживает программируемую обработку вершин. Однако в этом случае дескриптор шейдера всегда является кодом FVF, указывающим фиксированную обработку данных вершин. Драйвер должен использовать код FVF, хранящийся в элементе dwHandle в качестве формата данных вершин в нуле потока. Драйвер, поддерживающий программируемую обработку вершин, должен проверить дескриптор, чтобы определить, относится ли он к шейдеру, ранее созданному с помощью D3DDP2OP_CREATEVERTEXSHADER или кода FVF, и выполнить соответствующее действие.

Пиксельные и вершинные шейдеры являются ортогональными. Таким образом, если устаревший код FVF выбран в качестве текущего шейдера вершин, это не означает устаревшую обработку пикселей. Чтобы сбросить обработку пикселей в подпрограммируемый режим, текущий шейдер пикселей также должен иметь значение нулю. Будьте внимательны в драйвере, чтобы сбросить только состояние обработки вершин в фиксированный режим функции, а не состояние обработки пикселей, если шейдер вершин задан для кода FVF.

При переключении с фиксированной обработки вершин на программируемую обработку вершин следует сохранить значения устаревшего состояния отрисовки и матриц. Если и когда происходит переключение с программируемой на фиксированную обработку вершин функции (драйвер получает D3DDP2OP_SETVERTEXSHADER с FVF в качестве дескриптора шейдера), то необходимо восстановить сохраненное состояние.

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

Для операций D3DDP2OP_SETVERTEXSHADERDECL среда выполнения задает устаревший код FVF или дескриптор объявления DirectX 9.0 в элементе dwHandle. Среда выполнения указывает дескриптор объявления DirectX 9.0, задав бит 0 дескриптора. Для операций D3DDP2OP_SETVERTEXSHADERFUNC среда выполнения задает значение dwHandle равным нулю, чтобы указать конвейер фиксированной функции.

Требования

Требование Ценность
заголовка d3dhal.h (include D3dhal.h)

См. также

D3DDP2OP_CREATEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADERDECL

D3DDP2OP_DELETEVERTEXSHADERFUNC

D3DDP2OP_SETSTREAMSOURCE

D3DDP2OP_SETSTREAMSOURCEUM

D3DDP2OP_SETVERTEXSHADER

D3DDP2OP_SETVERTEXSHADERDECL

D3DDP2OP_SETVERTEXSHADERFUNC

D3DHAL_DP2CREATEVERTEXSHADER

D3DHAL_DP2SETVERTEXSHADERCONST

D3dDrawPrimitives2