структура 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