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


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

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

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

Синтаксис

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 (включая 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