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


Преобразование состояния фиксированной функции 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