функция обратного вызова LPD3DHAL_VALIDATETEXTURESTAGESTATECB (d3dhal.h)

Функция D3dValidateTextureStageState возвращает количество проходов, в которых оборудование может выполнять операции смешения, указанные в текущем состоянии.

Синтаксис

LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;

DWORD Lpd3dhalValidatetexturestagestatecb(
  LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}

Параметры

unnamedParam1

pvtssd [in]

Указывает на структуру D3DHAL_VALIDATETEXTURESTAGESTATEDATA, содержащую сведения, необходимые драйверу для определения и возврата количества проходов, необходимых для выполнения операций смешения.

Возвращаемое значение

D3dValidateTextureStageState возвращает один из следующих кодов обратного вызова:

Замечания

Драйверы Microsoft Direct3D, поддерживающие текстирование, должны реализовать D3dValidateTextureStageState.

Реализация этой функции драйвера должна оценить текущее состояние текстуры для всех этапов текстур, связанных с контекстом. Если оборудование драйвера может выполнять указанные операции смешения, драйвер должен вернуть количество передач данных о состоянии, необходимых оборудованию. Если оборудование не может выполнять указанные операции смешения, драйвер должен вернуть один из следующих кодов ошибок в элементе ddrval структуры D3DHAL_VALIDATETEXTURESTAGESTATEDATA на pvtssd:

Код ошибки Значение
D3DERR_CONFLICTINGTEXTUREFILTER Оборудование не может одновременно выполнять трилинейную фильтрацию и мультитекстирование.
D3DERR_TOOMANYOPERATIONS Оборудование не может обрабатывать указанное количество операций.
D3DERR_UNSUPPORTEDALPHAARG Оборудование не поддерживает указанный альфа-аргумент.
D3DERR_UNSUPPORTEDALPHAOPERATION Оборудование не поддерживает указанную альфа-операцию.
D3DERR_UNSUPPORTEDCOLORARG Оборудование не поддерживает указанный аргумент цвета.
D3DERR_UNSUPPORTEDCOLOROPERATION Оборудование не поддерживает указанную операцию цвета.
D3DERR_UNSUPPORTEDFACTORVALUE Оборудование не поддерживает D3DTA_TFACTOR больше 1.0.
D3DERR_WRONGTEXTUREFORMAT Оборудование не поддерживает текущее состояние в выбранном формате текстуры.

 

Direct3D вызывает D3dValidateTextureStageState в ответ на запрос приложения с помощью вызова IDirect3Device7::ValidateDevice. Число проходов, возвращаемых драйвером, распространяется обратно в приложение, которое затем может решить, будет ли он продолжать отрисовку с помощью текущего состояния или если он должен изменить операции смешивания, чтобы ускорить отрисовку или отрисовку на всех. Нет ограничений на количество проходов, которые может вернуть драйвер.

Драйвер, возвращающий несколько проходов, отвечает за правильное выполнение передачи всех состояний и примитивных данных при отрисовке.

Запросы, которые, скорее всего, завершаются ошибкой D3dValidateTextureStageState:

  • Использование диффузных итерированных значений в качестве ARG или операции BLENDDIFFUSE поддерживается на текущем оборудовании. Многие части могут вводить только итерированные данные цвета на последнем этапе операции текстуры.

  • Попытка указать текстуру для каждого этапа в качестве arg1 в предпочтении arg2.

  • Попытка использовать диффузные или скалярные значения на произвольных этапах многотекстового смешивания. Для многих карточек эти значения можно использовать только в окончательном состоянии смешения текстур; для других, только на первом этапе.

  • Попытка сделать больше в первой текстуре, чем просто реплицировать альфа-каналы в цветовые каналы или инвертировать входные данные. Для многих карточек единицы смешивания, связанные с первой текстурой, не могут обрабатывать операции более сложными, чем эти. Приведенные ниже примеры пытаются использовать только единицу смешения второй текстуры, если это возможно. Предполагается, что первая единица находится в состоянии по умолчанию в примерах.

    dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE );   *
    dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
    
  • Выполнение операций для выходных альфа-каналов, которые являются более сложными, чем или существенно отличаются от операций, указанных для цветового канала, менее вероятно, будут поддерживаться.

  • Попытка одновременного использования D3DTA_TFACTOR и D3DTA_DIFFUSE. Некоторые аппаратные средства не поддерживают это.

  • Попытка одновременного использования нескольких текстур и MIP сопоставленной трилинейной фильтрации. Многие карточки одновременно не поддерживают эти операции. Если трилинейная фильтрация была запрошена для текстуры, связанной с многотекстовых операций, и она завершает проверку, отключите трилайнар и повторите попытку. В этом случае вместо этого лучше всего выполнять многопассную отрисовку.

Требования

Требование Ценность
целевая платформа Настольный
заголовка d3dhal.h (include D3dhal.h)

См. также

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2