Преобразование состояния Fixed-Function Direct3D
Среда выполнения Microsoft Direct3D преобразует фиксированное состояние функции Direct3D в вершинный или пиксельный шейдер версии 2.0, если драйвер отображения пользовательского режима поддерживает версию 2.0 или более позднюю для каждого типа шейдера. Однако среда выполнения не преобразует версии шейдеров. Например, если приложение использует вершинный или пиксельный шейдер версии 1.1, то версия 1.1 передается в драйвер отображения пользовательского режима независимо от того, поддерживает ли драйвер шейдер версии 2.0 или более поздней. Коды гибкого формата вершин (FVF) используются при обработке с фиксированными функциями.
Функции конвертера для версий DirectX
Принцип работы преобразователей вершин с фиксированной функцией и преобразователей шейдеров пикселей зависит от используемой версии Microsoft DirectX:
DirectX 9.0
Преобразователи вершин с фиксированной функцией и преобразователи шейдеров пикселей могут работать с моделью драйвера дисплея Windows Vista.
Преобразователи включены по умолчанию.
При использовании преобразователя вершин с фиксированной функцией или преобразователя шейдера пикселей чистое устройство отключается. Когда приложение запрашивает чистое устройство, среда выполнения Direct3D создает устройство HAL.
Среда выполнения поддерживает смешанную обработку вершин.
Программная обработка вершин всегда использует преобразователь шейдера вершин с фиксированной функцией.
Аппаратная обработка вершин использует преобразователь шейдеров вершин с фиксированной функцией, если драйвер поддерживает вершинный шейдер версии 2.0 или более поздней.
Аппаратная обработка вершин использует преобразователь шейдеров пикселей с фиксированной функцией, если драйвер поддерживает пиксельные шейдеры версии 2.0 или более поздней.
В режиме обработки смешанной вершины, когда преобразователь шейдера вершин с фиксированной функцией включен для оборудования, количество констант с плавающей точкой устанавливается на то, что может поддерживать оборудование.
DirectX 8.0 и более ранние версии
Преобразователи вершин и пиксельных шейдеров с фиксированной функцией могут работать только с моделью драйвера дисплея Windows Vista.
Преобразователи включены по умолчанию.
Преобразователь вершинных шейдеров с фиксированной функцией не поддерживается при программной обработке вершин.
Аппаратная обработка вершин использует преобразователь шейдеров вершин с фиксированной функцией, если драйвер поддерживает вершинный шейдер версии 2.0 или более поздней.
Аппаратная обработка вершин использует преобразователь шейдеров пикселей с фиксированной функцией, если драйвер поддерживает пиксельные шейдеры версии 2.0 или более поздней.
Примечание Для версий DirectX до DirectX 8.0 код сопоставления фиксированной функции и шейдера реализован в Ddraw.dll.
Функции драйвера отображения неиспользуемых User-Mode
Следующие функции драйвера отображения в пользовательском режиме не вызываются средой выполнения Direct3D, если включен преобразователь вершинных шейдеров с фиксированной функцией:
Неиспользуемые состояния отрисовки
Следующие состояния отрисовки не передаются средой выполнения Direct3D (или, если они пройдены по ошибке, могут быть проигнорированы драйвером), если включен преобразователь шейдера вершин с фиксированной функцией:
D3DRS_VERTEXBLEND
D3DRS_INDEXEDVERTEXBLENDENABLE
D3DRS_TWEENFACTOR
D3DRS_FOGVERTEXMODE
D3DRS_LIGHTING
D3DRS_AMBIENT
D3DRS_COLORVERTEX
D3DRS_LOCALVIEWER
D3DRS_DIFFUSEMATERIALSOURCE
D3DRS_SPECULARMATERIALSOURCE
D3DRS_AMBIENTMATERIALSOURCE
D3DRS_EMISSIVEMATERIALSOURCE
D3DRS_POINTSCALEENABLE
D3DRS_POINTSCALE_A
D3DRS_POINTSCALE_B
D3DRS_POINTSCALE_C
D3DRS_NORMALIZENORMALS
Пропущенные состояния стадии текстуры
Среда выполнения Direct3D передает драйверу все состояния стадии текстуры. Драйвер должен игнорировать следующие состояния этапа текстуры, если включен преобразователь шейдера пикселей с фиксированной функцией:
D3DTSS_COLOROP
D3DTSS_COLORARG1
D3DTSS_COLORARG2
D3DTSS_ALPHAOP
D3DTSS_ALPHAARG1
D3DTSS_ALPHAARG2
D3DTSS_BUMPENVMAT00
D3DTSS_BUMPENVMAT01
D3DTSS_BUMPENVMAT10
D3DTSS_BUMPENVMAT11
D3DTSS_BUMPENVLSCALE
D3DTSS_BUMPENVLOFFSET
D3DTSS_COLORARG0
D3DTSS_ALPHAARG0
D3DTSS_RESULTARG
D3DTSS_CONSTANT