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


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